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 相关文章推荐
JS input文本框禁用右键和复制粘贴功能的代码
Apr 15 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
Mar 25 Javascript
js判断浏览器类型的方法
Aug 07 Javascript
JS禁用浏览器退格键实现思路及代码
Oct 29 Javascript
javascript继承机制实例详解
Nov 20 Javascript
jQuery操作cookie方法实例教程
Nov 25 Javascript
jQuery.each使用详解
Jul 07 Javascript
js实现图片切换(动画版)
Dec 25 Javascript
jquery实现回车键触发事件(实例讲解)
Nov 21 jQuery
axios拦截设置和错误处理方法
Mar 05 Javascript
Vue根据条件添加click事件的方式
Nov 09 Javascript
原生JS实现微信通讯录
Jun 18 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
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
php Ajax乱码
2008/04/09 PHP
PHP读取XML值的代码(推荐)
2011/01/01 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
自定义vue组件发布到npm的方法
2018/05/09 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
在Python中使用判断语句和循环的教程
2015/04/25 Python
python实现K最近邻算法
2018/01/29 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
2020/09/05 Python
Django框架请求生命周期实现原理
2020/11/13 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
美国美妆网站:B-Glowing
2016/10/12 全球购物
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
《雾凇》教学反思
2014/02/17 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
学雷锋宣传标语
2014/06/25 职场文书
优秀员工自荐书
2015/03/06 职场文书
感恩教师主题班会
2015/08/12 职场文书
决心书格式范文
2015/09/23 职场文书