vue-cli3使用 DllPlugin 实现预编译提升构建速度


Posted in Javascript onApril 24, 2019

在项目打包上有两个目标:减少打包代码体积和加快打包速度

1. 减少打包体积:

(1)对于用的比较少的库,可以去掉(我去掉了jquery以及lodash),用到的地方,参考源码自己写

(2)非用不可的又比较大的库(我这里用了monaco-edit),使用cdn方式引入

打包体积减少的情况下,自然速度也会有所提升

2. 加快打包速度:

我目前做了这些:

(1)vue-cli2升级到vue-cli3,顺便webpack2升级到webpack4,构建速度一下子从3分钟左右提升到不到1分钟(vue-cli3升级过程 https://3water.com/article/160146.htm

(2)使用 DllPlugin 进行预编译,过程如下:

·    npm install webpack-cli --save-d

·    独立出一套webpack配置webpack.dll.conf,用dllPlugin定义要打包的dll文件;这里我在根目录下新建webpack.dll.conf.js  内容如下

const path = require("path");
const webpack = require("webpack");
module.exports = {
 entry: {
 vendor: [
  "vue-router/dist/vue-router.esm.js",
  "vuex/dist/vuex.esm.js",
  "axios"
 ]
 },
 output: {
 path: path.join(__dirname, "public/vendor"),
 filename: "[name].dll.js",
 library: "[name]_[hash]" // vendor.dll.js中暴露出的全局变量名
 },
 plugins: [
 new webpack.DllPlugin({
  path: path.join(__dirname, "public/vendor", "[name]-manifest.json"),
  name: "[name]_[hash]",
  context: process.cwd()
 })
 ]
};

注意;在vue-cli3中一定要把生成的dll放到public中或者自己去配置publicPath (没仔细看文档掉进坑)

·    package.json中定义运行webpack.dll.conf.js的命令

{
···
 "scripts": {
 "serve": "npm link typescript && vue-cli-service serve",
 <strong>"dll": "webpack -p --progress --config ./webpack.dll.conf.js",</strong>
···
 },
···
}

·    运行npm run dll命令生成dll

·    index.html中加载生成的dll文件

<script src="./vendor/vendor.dll.js"></script>

·    以上已经完成预编译并载入;但是一定不要忘记webpack构建时告诉webpack哪些文件已被预编译,使构建过程忽略这些已预编译的文件;

具体做法就是在vue.config.js的配置文件中添加

const webpack = require("webpack");
module.exports = {
···
 configureWebpack: {
 plugins: [
  new webpack.DllReferencePlugin({
  context: process.cwd(),
  manifest: require("./public/vendor/vendor-manifest.json")
  })
 ]
 }
···
}

总结

以上所述是小编给大家介绍的vue-cli3使用 DllPlugin 实现预编译提升构建速度 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
checkbox 多选框 联动实现代码
Oct 22 Javascript
return false,对阻止事件默认动作的一些测试代码
Nov 17 Javascript
jQuery为iframe的body添加click事件的实现代码
Apr 07 Javascript
Javascript中产生固定结果的函数优化技巧
Jan 16 Javascript
JavaScript匿名函数用法分析
Feb 13 Javascript
一分钟理解js闭包
May 04 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
jQuery实现select模糊查询(反射机制)
Jan 14 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
Vue组件中slot的用法
Jan 30 Javascript
vue.js实现简单的计算器功能
Feb 22 Javascript
Vue组件为什么data必须是一个函数
Jun 11 Javascript
vue改变对象或数组时的刷新机制的方法总结
Apr 24 #Javascript
详解Vue源码中一些util函数
Apr 24 #Javascript
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 #Javascript
VUE 实现复制内容到剪贴板的两种方法
Apr 24 #Javascript
详解一个小实例理解js原型和继承
Apr 24 #Javascript
微信小程序实现的一键复制功能示例
Apr 24 #Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
Apr 24 #Javascript
You might like
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
实例解析angularjs的filter过滤器
2016/12/14 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
在django中,关于session的通用设置方法
2019/08/06 Python
超实用的 30 段 Python 案例
2019/10/10 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
《鸟的天堂》教学反思
2014/02/27 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
公司户外活动总结
2014/07/04 职场文书
社会实践的活动方案
2014/08/22 职场文书
综治工作心得体会
2014/09/11 职场文书
学风建设演讲稿
2014/09/12 职场文书
公司员工离职证明书
2014/10/04 职场文书
大学生党员自我剖析材料
2014/10/06 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
2016高三毕业赠言寄语
2015/12/04 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android