这一节主要讲压缩代码,正常我们打包生产环境代码,js文件已经是压缩的,但是css并没有压缩,所以需要通过插件来压缩css代码,这个插件是optimize-css-assets-webpack-plugin
和cssnano
安装
npm install optimize-css-assets-webpack-plugin cssnano --save-dev
调用
配置
注意这个配置,还需要在与plugins统计的optimization.minimizer中调用,其实也可以直接就在这个里面调用配置,但是必须在plugins里面调用一下
optimization: {
new OptimizeCss({
assetNameRegExp: /\.style\.css$/g,
cssProcessor: cssnano,
cssProcessorOptions: { discardComments: { removeAll: true } },
canPrint: true,
})
}
参数说明
assetNameRegExp
全局正则匹配需要压缩代码的文件类型
cssProcessor
采用哪种方式压缩,这里是cssnano
cssProcessorOptions.discardComments
这个配置是清除所有注释样式
canPrint
表示插件能够在console中打印信息,默认值是true
cssProcessorOptions.safe
避免 cssnano 重新计算 z-index
cssProcessorOptions.autoprefixer
cssnano 集成了autoprefixer的功能,关闭autoprefixer功能
注意cssProcessor是cssnano的配置,所以需要参考cssnano的配置
配置完上面的css压缩后,悲剧的发现,js文件已经不压缩了,所以只能采用官方的压缩js的插件来重新给压缩一下
安装
npm install uglifyjs-webpack-plugin --save-dev
调用
const UglifyJSWebpackPlugin = require('uglifyjs-webpack-plugin')
配置
这个插件配置,跟上面的一样,在plugins里面调用,在optimization
里面再次调用配置,这个配置还可以去除js里面的debugger,console等东西哦
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: false,
drop_debugger: true, //去掉debugger
drop_console: true, // 去掉console
pure_funcs: ['console.log']// 移除console
}
},
sourceMap: config.build.productionSourceMap,
parallel: true
})
这样配置完成后,发现js文件又开始已经压缩了
参数说明
compress.warnings
警告
compress.drop_debugger
是否清除debugger,默认false
compress.drop_console
是否清除console,默认false
compress.pure_funcs
是否移除console,数组里面配置要移除的内容
compress.dead_code
清除没有有的代码
uglifyjs选项配置
uglifyjs原始配置
原文:https://www.cnblogs.com/zjh-study/p/10863770.html