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" },