create-dynamic-app
Version:
CLI tool to generate sample applications using Dynamic's web3 authentication
65 lines (56 loc) • 1.59 kB
text/typescript
import type { PackageJson } from "../types"
export const addSolanaDependencies = (packageJson: PackageJson) => {
packageJson.dependencies["crypto-browserify"] = "^3.12.0"
packageJson.dependencies["stream-browserify"] = "^3.0.0"
packageJson.dependencies["process"] = "^0.11.10"
// Add the browser field
packageJson.browser = {
...packageJson.browser,
crypto: false,
}
// Add the solana overrides
packageJson.overrides = {
...(packageJson.overrides ?? {}),
"rpc-websockets": "7.10.0",
"@solana/web3.js": "1.91.6",
}
return packageJson
}
export const createConfigOverrides = () => {
return `
const webpack = require('webpack');
module.exports = {
webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => {
config.externals.push("pino-pretty", "lokijs", "encoding");
config.resolve.fallback = {
...config.resolve.fallback,
crypto: require.resolve('crypto-browserify'),
stream: require.resolve('stream-browserify'),
assert: require.resolve('assert'),
process: false,
};
config.plugins.push(
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
process: 'process/browser',
})
);
return config;
},
};
`
}
export const updatePackageJsonScripts = (packageJson: PackageJson) => {
return packageJson
}
export const createNonSolanaConfig = () => {
return `
/** @type {import('next').NextConfig} */
const nextConfig = {
webpack: (config) => {
config.externals.push("pino-pretty", "lokijs", "encoding");
return config;
},
};
module.exports = nextConfig;`
}