打包优化(webpack dll)

Hello,大家周末好。在近期项目上线正在打包的时候正好在旁边有别的项目组的,嫌弃了我们项目的打包速度真的是狠狠的给我嘲讽了一下就连我们的全栈竟然都没有放过。所有今天在这里给大家分享一下我们是怎么提升打包速度的。

一:优化前的打包
先初始化一个项目然后引入大家不较常用的UI库插件等等,这里我就引入一个element给大家看一下效果。
在这里插入图片描述
打包速度:37406ms

二:优化后的打包

       安装:cnpm install add-asset-html-webpack-plugin@2.1.2

在build文件夹下新建文件夹名为 webpack.dll.conf.js

     const path = require('path');
		const webpack = require('webpack');
		module.exports = {
		  entry: {
		    vendor: [
		      'vue',
		      'vue-router',
		      'element-ui',
		      'xxxxxxx'      //这里是需要缓存的模块和插件
		    ]
		  },
		  output: {
		    path: path.join(__dirname, '../static/js'), //放在项目的static/js目录下面
		    filename: '[name].dll.js', //打包文件的名字
		    library: '[name]_library' //可选 暴露出的全局变量名
		    // vendor.dll.js中暴露出的全局变量名。
		    // 主要是给DllPlugin中的name使用,
		    // 故这里需要和webpack.DllPlugin中的`name: '[name]_library',`保持一致。
		  },
		  plugins: [
		    new webpack.DllPlugin({
		      path: path.join(__dirname, '.', '[name]-manifest.json'), //生成上文说到清单文件,放在当前build文件下面,这个看你自己想放哪里了。
		      name: '[name]_library',
		      // context: __dirname
		    }),
		    //压缩 只是为了包更小一点 
		
		  ]
		};

在webpack.prod.conf.js添加下面代码(webpack.prod.conf.js文件是最终完成打包的配置文件)

   const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin');  //在上面导入
   new webpack.DllReferencePlugin({
				context: path.resolve(__dirname, '..'),
				manifest: require('./vendor-manifest.json')
				}),
				//这个主要是将生成的vendor.dll.js文件加上hash值插入到页面中。
				new AddAssetHtmlPlugin([{
				filepath: path.resolve(__dirname, '../static/js/vendor.dll.js'),
				outputPath: utils.assetsPath('js'),
				publicPath: path.posix.join(config.build.assetsPublicPath, 'static/js'),
				includeSourcemap: false,
				hash: true,
				}]),

在这里插入图片描述
在package.json文件添加命令

"dll": "webpack --config build/webpack.dll.conf.js"

在这里插入图片描述
运行cnpm run dll,这时候会生成2个文件如图
在这里插入图片描述
然后打包cnpm run build在这里插入图片描述
优化后的打包速度:10467ms(比之前快了将近快3倍了偶)

提醒:不是每次打包之前都需要cnpm run dll的如果你没有给webpack.dll.conf.js里面添加东西的话只需要dll一次以后就会走缓存,如果添加的配置项就先把dll生成后的2个文件删除以后重新cnpm run dll 然后打包cnpm run build就可以了

注意我这个种的配置方法适合webpack4.0一下版本,如果你的webpack版本是4.0以上版本可参考官方文档。最后奉上github:https://github.com/Liingot/dll

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值