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 相关文章推荐
javascript获取ckeditor编辑器的值(实现代码)
Nov 18 Javascript
jQuery入门介绍之基础知识
Jan 13 Javascript
浅析javascript函数表达式
Feb 10 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
JavaScript中的编码和解码函数
Feb 15 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
原生JS实现瀑布流插件
Feb 06 Javascript
node.js 模块和其下载资源的镜像设置的方法
Sep 06 Javascript
深入学习js函数的隐式参数 arguments 和 this
Jun 24 Javascript
jquery更改元素属性attr()方法操作示例
May 22 jQuery
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 Javascript
关于ES6尾调用优化的使用
Sep 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
非常不错的MySQL优化的8条经验
2008/03/24 PHP
php Static关键字实用方法
2010/06/04 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
Python random模块常用方法
2014/11/03 Python
Python实现字典按照value进行排序的方法分析
2017/12/23 Python
Python下简易的单例模式详解
2019/04/08 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
python 字典套字典或列表的示例
2019/12/16 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
公司离职证明范本
2014/01/13 职场文书
爱心捐款倡议书
2014/04/14 职场文书
交流会主持词
2015/07/02 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
python如何在word中存储本地图片
2021/04/07 Python
4种非常实用的python内置数据结构
2021/04/28 Python
python装饰器代码解析
2022/03/23 Python