@sentre/craco-plugins
Version:
Craco plugins for CRA
48 lines (47 loc) • 1.64 kB
JavaScript
;
/**
* Maintain Webpack 5 compatibility
*/
var path = require('path');
var webpack = require('webpack');
var overrideWebpackConfig = function overrideWebpackConfig(_ref) {
var context = _ref.context,
webpackConfig = _ref.webpackConfig,
pluginOptions = _ref.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: overrideWebpackConfig
};