Vue项目打包dll优化——提升打包速度

背景

webpack每次打包都会去处理所有的模块,包括第三方模块。但是我们一般不会去改第三方模块,能不能让第三方模块只处理一次呢?
webpack的打包时间由两个因素决定:所处理的文件数量,所进行的操作步骤
优化会增加操作步骤,但是减少的时间大于增加的时间,则是对打包有帮助的

dll优化

dll为webpack的内置模块
让webpack只处理一次第三方模块,后续的打包告诉webpack不要处理已经打包过的第三方库。

优化步骤

1、build文件夹下新建webpack.dll.js文件,用于对第三方模块进行打包

//专门用于打包第三方模块
const path = require('path');
const webpack = require('webpack');
module.exports = {
    entry:{
        //定义需要提前打包的模块
        vendor: ['vue/dist/vue.esm.js','vue-router','axios','loadsh']
    },
    output:{
        path:path.join(__dirname,"../static/js"),//static是唯一一个上线之后还可以加载的文件夹
        filename:"[name].dll.js",
        library:"[name]_library"
    },
    plugins:[
        new webpack.DllPlugin({
            path:path.join(__dirname,".","[name]-manifest.json"),//通过一个json告诉webpack这些已经打包
            name:"[name]_library" //必须与上面的library同名,否则包引入之后会出错
        })
    ]
}

2、package.json中编写dll打包命令

tips
编写打包质量和直接在命令行中使用webpack打包的区别
直接在命令行中使用的是全局安装的webpack
打包指令使用的是项目内部的webpack
由于项目差异化,全局与项目内部webpack版本可能存在不同,所以需要编写打包指令

在这里插入图片描述
3、进行第三方模块打包,打包之后,build文件夹下会多一个vendor-manifest.json文件
在这里插入图片描述
在这里插入图片描述
4、在build下的webpack.prod.conf.js中的plugins内插入dll插件,将vendor-manifest.json传入,告诉webpack这部分内容不需要再打包

//接收之前定义好的json文件,让正式环境明确哪些不用再打包
new webpack.DllReferencePlugin({
  context: path.join(__dirname,".."),
  manifest: require("./vendor-manifest.json")
})

5、比对dll优化前后的打包时间,会发现时间提升一倍左右
第一次打包
在这里插入图片描述
优化之后的打包时间
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue项目打包速度优化,可以尝试以下几种方法: 1. 使用CDN:将一些常用的第三方库(如VueVuex、Vue Router等)从本地打包中移除,改为通过CDN引入。这样可以减少打包体积和加快打包速度。 2. 按需引入组件:在使用UI组件库时,可以考虑按需引入组件,而不是全部引入。这可以通过babel-plugin-component等工具来实现,减少不必要的打包和编译时间。 3. 代码拆分:将大型的代码块拆分成更小的模块,利用Webpack的代码分割功能(如异步加载、按需加载)来实现懒加载。这样可以减少初始加载时间,提升用户体验。 4. 优化图片:对于项目中的图片资源,可以使用压缩工具来减小图片大小,如使用imagemin-webpack-plugin等插件进行图片压缩。 5. 缓存和持久化:合理利用浏览器缓存和服务端缓存,减少不必要的请求和加载时间。另外,可以考虑使用localStorage或IndexedDB等技术进行数据持久化,减少数据加载时间。 6. 使用Tree Shaking:通过配置Webpack的tree shaking功能,可以剔除项目中未使用的代码,减少打包体积和提升加载速度。 7. 配置合理的Webpack:根据项目需求,合理配置Webpack的各项参数,如使用cache-loader、thread-loader等插件来提升构建速度。 需要注意的是,优化策略要根据具体项目情况进行选择,不同的项目可能有不同的瓶颈和优化空间。可以通过Webpack Bundle Analyzer等工具来分析打包结果,找出优化的重点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值