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 模式设计之工厂模式学习心得
Apr 27 Javascript
深入理解JavaScript定时机制
Oct 29 Javascript
Jquery遍历节点的方法小集
Jan 22 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
Mar 27 Javascript
Node.js抓取中文网页乱码问题和解决方法
Feb 10 Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 Javascript
基于jQuery实现点击弹出层实例代码
Jan 01 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 Javascript
Angular实现表单验证功能
Nov 13 Javascript
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
JS实现倒序输出的几种常用方法示例
Apr 13 Javascript
原生js拖拽功能制作滑动条实例代码
Feb 05 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学习之数据类型之间的转换介绍
2011/06/09 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python自动发邮件库yagmail的示例代码
2018/02/23 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
冰淇淋开店创业计划书
2014/02/01 职场文书
党务公开方案
2014/05/06 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL