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替换URL中的参数值示例代码
Jan 27 Javascript
js 中将多个逗号替换为一个逗号的代码
Jun 07 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
Jul 18 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
Aug 01 Javascript
Bootstrap实现提示框和弹出框效果
Jan 11 Javascript
浅析vue数据绑定
Jan 17 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
vue实现移动端图片裁剪上传功能
Aug 18 Javascript
详解vue项目的构建,打包,发布全过程
Nov 23 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
JavaScript数组及常见操作方法小结
Nov 13 Javascript
JS中FormData类实现文件上传
Mar 27 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
PHP中让curl支持sock5的代码实例
2015/01/21 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
解决在vue项目中webpack打包后字体不生效的问题
2018/09/01 Javascript
详解package.json版本号规则
2019/08/01 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
浅谈flask中的before_request与after_request
2018/01/20 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
努比亚手机官网:nubia
2016/10/06 全球购物
开办化妆品公司创业计划书
2013/12/26 职场文书
商场消防演习方案
2014/02/12 职场文书
元宵晚会主持词
2014/03/25 职场文书
节水口号标语
2014/06/19 职场文书
安全月宣传标语
2014/10/07 职场文书
一年级数学上册复习计划
2015/01/17 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
加班费申请报告
2015/05/15 职场文书
初一英语教学反思
2016/02/15 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python