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 相关文章推荐
jquery 选项卡效果 新手代码
Jul 08 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
Feb 28 Javascript
JQuery页面地址处理插件jqURL详解
May 03 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
js处理层级数据结构的方法小结
Jan 17 Javascript
从零学习node.js之搭建http服务器(二)
Feb 21 Javascript
详解如何使用webpack打包JS
Jun 21 Javascript
JS实现图片旋转动画效果封装与使用示例
Jul 09 Javascript
Vue实现自定义下拉菜单功能
Jul 16 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
Aug 31 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
Apr 21 Javascript
vue 页面跳转的实现方式
Jan 12 Vue.js
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中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
2017/11/07 PHP
修改发贴的编辑功能
2007/03/07 Javascript
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
小程序实现投票进度条
2019/11/20 Javascript
Python os模块学习笔记
2015/06/21 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
python Xpath语法的使用
2020/11/26 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
商场主管竞聘书
2014/03/31 职场文书
个人校本研修方案
2014/05/26 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
求职信的正确写法
2014/07/10 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
节水倡议书
2015/01/19 职场文书
孔繁森观后感
2015/06/10 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python