webpack dll打包优化

本小妞迷上赌 提交于 2020-01-26 09:55:31

最近一直在学习一些webpack,所以综合了一下关于dll 打包优化的方法,应用到自己的项目中!当然百度搜索出来一推,大佬的文章数不胜数。咱们也得跟紧潮流不是,所以记录一下,赶紧用自己项目试试!(大佬勿喷)

一. 优化前的打包
公司项目不算是很大,打包看看时间!

20秒
打包速度:21384ms ,21秒左右

二. 优化后的打包

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

在bulid文件夹新建文件 ** webpack.dll.conf.js **

const path = require('path')
const webpack = require('webpack') 
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

module.exports = {
    entry:{
        vendor:[
            'axios',
            'vue',
            'vue-router',
            'vuex',
            'iview',
            //添加需要缓存的模块和插件
        ]
    },
    output:{
        path:path.resolve(__dirname,'../static/js'),
        filename:'[name].dll.js',//名字
        library:'[name]_library'
    },
    plugins:[
    	//压缩dll文件
        new UglifyJsPlugin({
            cache: false,    //是否启用文件缓存
            parallel: true,  //使用多进程并行运行来提高构建速度
            sourceMap: false // 错误信息映射到模块 
        }),
		//解释是启用作用域提升,作用是让代码文件更小、运行的更快(并无卵用)
       new webpack.optimize.ModuleConcatenationPlugin(),
       new webpack.DllPlugin({
           path:path.join(__dirname,'.','[name]-manifest.json'),
           name:'[name]_library'
       })
       //压缩
    ]

}

然后在 webpack.prod.conf.js 下添加代码(是为了最终打包的配置文件)

	const AddAssetHtmlPlugin = require('add-asset-html-webpack-plugin');
	//在plugins下 new 两个插件
    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"

欧了~ 现在我们试试打包速度!
在这里插入图片描述
打包速度:15321ms ,15秒左右

emmm,毕竟,项目小嘛 项目大一点可能效果更明显了。百度了很多总结了一下大佬的文章;

下面这个是我参考的大佬文章,配置明细是什么你们就自己去看咯 hhh 毕竟我只是想记录一下过程。
小声bb(我才不会告诉你们是我赖的打注释,略~);

http://https://blog.csdn.net/weixin_39773218/article/details/97494099

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!