<返回更多

如何解决webpack打包文件过大的问题

2019-09-10    
加入收藏

vue-cli全家套相信很多人都用过,但可能很多人不太清楚webpack为解决打包文件过大做了哪些事情,今天我们就主要来聊聊这个。

如何解决webpack打包文件过大的问题

 

首先配置全局变量

首先,通过指定环境,告诉webpack我们当前处于production环境中,要按照production的方式去打包。

 //指定环境,将process.env.NODE_ENV环境与library关联
 new Webpack.DefinePlugin({
	'process.env.NODE_ENV': JSON.stringify('production'),
 })

优化devtool中的source-map.

dev-tool提供了很多种选项,用来增强我们debug的能力,我们熟知的有:source-map,inline-source-map,cheap-source-map等等。详细的用法可以参考 Devtool官方文档(https://webpack.github.io/docs/configuration.html#devtool )。如果你的文件在打包之后突然变成好几M,那么不用想,肯定是因为source-map的原因。source-map在开发阶段确实很好用,调试起来很方便,但是在生产环境下就没必要部署了。 建议在prod环境下关闭source-map。

剥离css文件,单独打包

安装webpack插件extract-text-webpack-plugin。

npm install extract-text-webpack-plugin --save-dev。
//使用方法:
plugins:[
 new ExtractTextPlugin('static/css/styles.[contenthash].css'),
]

这里使用了contenthash,webpack会根据内容去生成hash值。

使用UglifyJSPlugin压缩。

通过UglifyJSPlugin可以压缩我们的*.js文件。

//安装方法: 
npm install uglifyjs-webpack-plugin --save-dev。
//使用方法
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
module.exports = {
 plugins: [
 new UglifyJSPlugin({
 parallel: 4,
 uglifyOptions: {
 output: {
 comments: false,
 beautify: false,
 },
 compress: {
 warnings: false
 },
 },
 cache: true,
 }),
 ]
}

提取公共依赖

使用CommonsChunkPlugin插件,将多个js文件进行提取,建立一个独立的文件。这个文件包含一些共用模块,浏这样览器只在刚开始的时候加载一次,便缓存起来供后续使用。而不用每次访问一个新界面时,再去加载一个更大的文件。

 entry:{
	App:'./entry',
	vendor:['react','other-lib'],
 },
 plugins:[
	 new Webpack.optimize.CommonsChunkPlugin({
	 name: 'vendor',
	 }),
 ]

开启gzip压缩

我们使用compression-webpack-plugin插件进行压缩。 安装:npm install compression-webpack-plugin --save-dev。 compression-webpack-plugin 详细用法 使用:

const CompressionPlugin = require("compression-webpack-plugin");
plugins:[
new CompressionPlugin({
	 asset: '[path].gz[query]', //目标资源名称。[file] 会被替换成原资源。[path] 会被替换成原资源路径,[query] 替换成原查询字符串
 algorithm: 'gzip',//算法
 test: new RegExp(
 '\.(js|css)$' //压缩 js 与 css
 ),
 threshold: 10240,//只处理比这个值大的资源。按字节计算
 minRatio: 0.8//只有压缩率比这个值小的资源才会被处理
})
]

压缩结果:

如何解决webpack打包文件过大的问题

 


如何解决webpack打包文件过大的问题

 

开启html压缩,自动添加上面生成的静态资源

添加插件html-webpack-plugin。

//安装: 
npm install html-webpack-plugin --save-dev
//使用方法:
plugins:[
 new HtmlWebpackPlugin({
 title: '',
 template: __dirname + '/../public/index.html',
 minify: {
 removeComments: true,
 collapseWhitespace: true,
 removeRedundantAttributes: true,
 useShortDoctype: true,
 removeEmptyAttributes: true,
 removeStyleLinkTypeAttributes: true,
 keepClosingSlash: true,
 minifyJS: true,
 minifyCSS: true,
 minifyURLs: true,
 },
 chunksSortMode:'dependency'
 }),
]
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>