@sentre/craco-plugins
Version:
Craco plugins for CRA
48 lines (45 loc) • 1.52 kB
JavaScript
/**
* Maintain Webpack 5 compatibility
*/
const path = require('path')
const webpack = require('webpack')
const overrideWebpackConfig = ({ context, webpackConfig, pluginOptions }) => {
// Add buffer to Webpack 5 polyfill
// https://github.com/diegomura/react-pdf/issues/1029
webpackConfig.plugins.push(
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
}),
)
// Add polyfill libraries
webpackConfig.resolve.fallback = {
// For Basics
buffer: require.resolve('buffer/'),
// For IPFS
util: require.resolve('util/'),
// For WASM
stream: require.resolve('stream-browserify'),
// For Ethereum Web3
assert: require.resolve('assert/'),
os: require.resolve('os-browserify/browser'),
http: require.resolve('stream-http'),
crypto: require.resolve('crypto-browserify'),
https: require.resolve('https-browserify'),
path: require.resolve('path-browserify'),
url: require.resolve('url/'),
fs: false,
// For Jupiter Aggregator
process: require.resolve('process/browser'),
// For Metaplex
zlib: require.resolve('browserify-zlib'),
}
// Fix unrecognized change / caching problem
webpackConfig.cache.buildDependencies.config.push(
path.join(context.paths.appPath, './craco.config.js'),
)
// Allow expression dependencies
// Critical dependency: the request of a dependency is an expression
webpackConfig.module.exprContextCritical = false
return webpackConfig
}
module.exports = { overrideWebpackConfig }