40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
const webpack = require('webpack')
|
|
const path = require('path')
|
|
const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin')
|
|
|
|
module.exports = function override(config) {
|
|
const fallback = config.resolve.fallback || {}
|
|
Object.assign(fallback, {
|
|
crypto: require.resolve('crypto-browserify'),
|
|
stream: require.resolve('stream-browserify'),
|
|
assert: require.resolve('assert'),
|
|
http: require.resolve('stream-http'),
|
|
https: require.resolve('https-browserify'),
|
|
os: require.resolve('os-browserify'),
|
|
url: require.resolve('url'),
|
|
})
|
|
config.resolve.fallback = fallback
|
|
config.plugins = (config.plugins || []).concat([
|
|
new webpack.ProvidePlugin({
|
|
process: 'process/browser',
|
|
Buffer: ['buffer', 'Buffer'],
|
|
}),
|
|
])
|
|
config.module.rules.unshift({
|
|
test: /\.m?js$/,
|
|
resolve: {
|
|
fullySpecified: false, // disable the behavior
|
|
},
|
|
})
|
|
// turns off the plugin that forbids importing from node_modules for the above-mentioned stuff
|
|
config.resolve.plugins = config.resolve.plugins.filter((plugin) => {
|
|
return !(plugin instanceof ModuleScopePlugin)
|
|
})
|
|
|
|
config.resolve.alias = {
|
|
'@': path.resolve(__dirname, 'src'),
|
|
}
|
|
|
|
return config
|
|
}
|