· 释放webpack配置
如果项目未释放react-scripts,则先执行命令:
yarn eject
释放配置文件,释放后根目录会生成config文件夹和script文件夹;
· 修改webpack配置
找到config > webpack.config.js
注意:最新构建的create-react-app项目只有这一个配置,老脚手架则会生成webpack.config.dev.js和webpack.config.prod.js
两个配置;
言归正传:
1、禁止生成LICENSE.txt文件
搜索关键字 【TerserPlugin】,对照下面增加相应配置:
optimization: {
minimize: isEnvProduction,
minimizer: [
new TerserPlugin({
terserOptions: {
parse: {
ecma: 8,
},
compress: {
ecma: 5,
warnings: false,
comparisons: false,
inline: 2,
pure_funcs: ["console.log"],
},
mangle: {
safari10: true,
},
// Added for profiling in devtools
keep_classnames: isEnvProductionProfile,
keep_fnames: isEnvProductionProfile,
output: {
ecma: 5,
comments: false,
ascii_only: true,
},
},
sourceMap: shouldUseSourceMap,
//使用多进程并行运行可提高构建速度。并发运行的默认次数:os.cpus().length - 1
+ parallel: true, //此处为新增配置
+ extractComments: false, //此处为新增配置
}),
...
],
...
},
2、禁止生成map文件
在webpack.config.js 顶部找到 如下代码:
const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';
将其改成:
const shouldUseSourceMap = false;
按理说直接将 shouldUseSourceMap 写死为false不可取,
应该在package.json 里面直接修改process.env.GENERATE_SOURCEMAP的值才是
对package.json 的尝试性修改:
"scripts": {
"start": "set PORT=3300 && node scripts/start.js",
"build": "set GENERATE_SOURCEMAP=false && node scripts/build.js",
"test": "node scripts/test.js"
},
小计:set PORT=3300 : 开发模式设置端口号
此处看到 ,build命令新增了set GENERATE_SOURCEMAP=false
不过,这种办法貌似没有起作用,我项目直接停留在
Creating an optimized production build...
这里不走了,目前也没找到原因,有知道原因的大佬可以告知下,感谢!
附带压缩插件【terser-webpack-plugin】的webpack配置地址: