webpack4之前版本,压缩js代码:
//webpack.config.js plugins:[ new webpack.optimize.UglifyJsPlugin({ compress:{ warnings:false //移除警告 } }), new webpack.optimize.DedupePlugin({ 'process.env.NODE_ENV':'"production"' //设置为产品上线环境,进一步压缩js代码 }) ]
webpack4版本,UglifyJsPlugin
不再压缩 loaders。在未来很长一段时间里,需要通过设置 minimize:true
来压缩 loaders。参考 loader 文档里的相关选项。
loaders 的压缩模式将在 webpack 3 或后续版本中取消。
为了兼容旧的 loaders,loaders 可以通过插件来切换到压缩模式:
plugins: [ + new webpack.LoaderOptionsPlugin({ + minimize: true + }) ]
不再需要 webpack.optimize.DedupePlugin。
1>webpack4中,webpack内置的JS压缩插件不能使用了,可以安装uglifyjs-webpack-plugin插件,使用同其他非内置插件;
webpack.config.js:
const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); module.exports = { optimization: { minimizer: [ new UglifyJsPlugin({ test: /\.js(\?.*)?$/i, //测试匹配文件, include: /\/includes/, //包含哪些文件 excluce: /\/excludes/, //不包含哪些文件 //允许过滤哪些块应该被uglified(默认情况下,所有块都是uglified)。 //返回true以uglify块,否则返回false。 chunkFilter: (chunk) => { // `vendor` 模块不压缩 if (chunk.name === 'vendor') { return false; } return true; } }), cache: false, //是否启用文件缓存,默认缓存在node_modules/.cache/uglifyjs-webpack-plugin.目录 parallel: true, //使用多进程并行运行来提高构建速度 ], }, };
更多用法参考如下官方文档:
https://www.npmjs.com/package/uglifyjs-webpack-plugin
2> --mode production 表示生产环境,只要配置在package.json的script里面, js自动就压缩了
//package.json "scripts": { "dev": "webpack --mode development", "build": "webpack --mode production" },