cli dll打包 vue_vue-cli3 DllPlugin 提取公用库的方法-程序员宅基地

技术标签: cli dll打包 vue  

vue 开发过程中,保存一次就会编译一次,如果能够减少编译的时间,哪怕是一丁点,也能节省不少时间。开发过程中个人编写的源文件才会频繁变动,而一些库文件我们一般是不会去改动的。如果能把这些库文件提取出来,就能减少打包体积,加快编译速度。本文主要讲述在 vue-cli3 中利用 dllplugin 来进行预编译。

1、安装相关插件

yarn add webpack-cli@^3.2.3 add-asset-html-webpack-plugin@^3.1.3 clean-webpack-plugin@^1.0.1 --dev

2、编写配置文件

在项目根目录下新建 webpack.dll.conf.js,输入以下内容。

const path = require('path')

const webpack = require('webpack')

const cleanwebpackplugin = require('clean-webpack-plugin')

// dll文件存放的目录

const dllpath = 'public/vendor'

module.exports = {

entry: {

// 需要提取的库文件

vendor: ['vue', 'vue-router', 'vuex', 'axios', 'element-ui']

},

output: {

path: path.join(__dirname, dllpath),

filename: '[name].dll.js',

// vendor.dll.js中暴露出的全局变量名

// 保持与 webpack.dllplugin 中名称一致

library: '[name]_[hash]'

},

plugins: [

// 清除之前的dll文件

new cleanwebpackplugin(['*.*'], {

root: path.join(__dirname, dllpath)

}),

// 设置环境变量

new webpack.defineplugin({

'process.env': {

node_env: 'production'

}

}),

// manifest.json 描述动态链接库包含了哪些内容

new webpack.dllplugin({

path: path.join(__dirname, dllpath, '[name]-manifest.json'),

// 保持与 output.library 中名称一致

name: '[name]_[hash]',

context: process.cwd()

})

]

}

3、生成 dll

在 package.json 中加入如下命令

"scripts": {

...

"dll": "webpack -p --progress --config ./webpack.dll.conf.js"

},

控制台运行

yarn run dll

4、忽略已编译文件

为了节约编译的时间,这时间我们需要告诉 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')

})

]

}

}

5、index.html 中加载生成的 dll 文件

经过上面的配置,公共库提取出来了,编译速度快了,但如果不引用生成的 dll 文件,网页是不能正常工作的。

打开 public/index.html,插入 script 标签。

...

到此公用库提取完成,但总觉得最后一部手工插入 script 不太优雅,下面介绍下如何自动引入生成的 dll 文件。

打开 vue.config.js 在 configurewebpack plugins节点下,配置 add-asset-html-webpack-plugin

const path = require('path')

const webpack = require('webpack')

const addassethtmlplugin = require('add-asset-html-webpack-plugin')

module.exports = {

...

configurewebpack: {

plugins: [

new webpack.dllreferenceplugin({

context: process.cwd(),

manifest: require('./public/vendor/vendor-manifest.json')

}),

// 将 dll 注入到 生成的 html 模板中

new addassethtmlplugin({

// dll文件位置

filepath: path.resolve(__dirname, './public/vendor/*.js'),

// dll 引用路径

publicpath: './vendor',

// dll最终输出的目录

outputpath: './vendor'

})

]

}

}

总结

以上所述是小编给大家介绍的vue-cli3 dllplugin 提取公用库的方法,希望对大家有所帮助

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42261886/article/details/112839921

智能推荐

计算带余除法(四种方法)_带余除法怎么写编程-程序员宅基地

文章浏览阅读387次,点赞12次,收藏4次。给定两个整数a和b (0 < a,b < 10,000),计算a除以b的整数商和余数。一行,包括两个整数a和b,依次为被除数和除数(不为零),中间用空格隔开。一行,包含两个整数,依次为整数商和余数,中间用一个空格隔开。示例:输入:15 2,输出:7 1_带余除法怎么写编程

【Maven教程】(九):使用 Maven 进行测试——动态指定要运行的测试用例、包含与排除测试用例、测试报告、运行TestNG测试、重用测试代码 ~_maven和testng怎么用-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏3次。本文的主题是Maven与测试的集成,不过在讲述具体的测试技巧之前先实现了背景案例的account-captcha模块,这一模块的测试代码也成了本章其他内容良好的素材。maven-surefire-plugin是Maven背后真正执行测试的插件,它有一组默认的文件名模式来匹配并自动运行测试类。用户还可以使用该插件来跳过测试、动态执行测试类、包含或排除测试等。maven-surefire-plugin能生成基本的测试报告,除此之外还能使用cobertura-maven-plugin生成测试覆盖率报告。_maven和testng怎么用

DataGridView列头checkbox-程序员宅基地

文章浏览阅读4.6k次。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Dat_datagridview列头

Python3 错误和异常_assertionerror怎么解决python-程序员宅基地

文章浏览阅读927次,点赞2次,收藏2次。Python3 错误和异常_assertionerror怎么解决python

Sharding-JDBC 1.5.0.M1 正式发布,全新的 SQL 解析引擎-程序员宅基地

文章浏览阅读109次。经过了长达几个月的紧张开发,Sharding-JDBC 1.5.0.M1终于正式发布。Sharding-JDBC 1.5.0.M1版本是一次里程碑式升级,工作量巨大,Sharding-JDBC截止到1.4.2之前所有的提交次数为385次,而1.5.0.M1一个版本的提交次数为517次。Sharding-JDBC从这个版本开始明确定位为“水平扩展以及in..._sharding-jdbc 1.5 解析器

golang检测网页编码_go 识别网页编码-程序员宅基地

文章浏览阅读876次。很简单直接上代码package mainimport ( "fmt" "io/ioutil" "net/http" "unicode/utf8")func main() { resp, _ := http.Get(`https://www.baidu.com/`) data, _ := ioutil.ReadAll(resp.Body) defer resp.Body.Close() fmt.Println(utf8.Valid(data)) // ture代表即utf8,否则你_go 识别网页编码

随便推点

统信UOS linux下opencv应用编译时的头文件和库文件路径查找设置方法_编译时找不到opencv头文件-程序员宅基地

文章浏览阅读1.3k次,点赞25次,收藏15次。本文介绍了在统信UOS 的linux Debian系环境下,通过设置环境变量、编译指令参数指定路径、pkg-config配置等方法设置opencv库的头文件和库文件路径的方法,通过这些方法可以是的gcc或g++编译器能顺利找到opencv的头文件和库文件。_编译时找不到opencv头文件

【论文翻译】HCGN:面向集体分类的异构图卷积网络深度学习模型_hgcn-程序员宅基地

文章浏览阅读1.8k次。HCGN:面向集体分类的异构图卷积网络深度学习模型摘要集合分类是研究网络数据的一项重要技术,旨在利用一组具有复杂依赖关系的互联实体的标签自相关性。随着各种异构信息网络的出现,集合分类目前正面临着来自异构信息网络的严峻挑战,如复杂的关系层次、潜在的不相容语义和节点上下文关系语义。为了应对这些挑战,本文提出了一种新的基于异构图卷积网络的深度学习模型,称之为HGCN,用于对HINs中的实体进行集体分类。我们的工作包括三个主要贡献:1)HGCN不仅通过多层异构卷积从关系复杂的HINs中学习潜在的关系,而且用适当_hgcn

java的重写_java 类的重写-程序员宅基地

文章浏览阅读211次。java的重写重写的一般用法方法重写的具体要求文章内容选自尚硅谷重写的一般用法java的重写是为了子类在继承父类方法的时候,需要用到父类的方法,但是方法体又和父类不完全一样,因此得在子类中创建一个和父类同名同参数的方法,实现方法的重写。方法的重写(override或overwrite)必须和父类同名,参数列表也相同重写后当子类调用父类的方法的时候,调用的是子类中重写的方法,而不是父类的方法。代码如下,创建一个Person类package com.atguigui.java;public_java 类的重写

Oracle学习笔记 1 ---Oracle概述和安装配置_oracle笔记1 1. oracle概述-程序员宅基地

文章浏览阅读793次。一、Oracle概述_oracle笔记1 1. oracle概述

基于matlab的一元线性回归原理_基于matlab栅格数据一元线性回归-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏27次。一元线性回归分析是在排除其他影响因素,分析某一个因素(自变量:X)是如何影响另外一个事物(因变量:Y)的过程,所进行的分析是比较理想化的。对于一元线性回归来说,可以看成Y的值是随着X的值变化,每一个实际的X都会有一个实际的Y值,我们叫Y实际,那么我们就是要求出一条直线,每一个实际的X都会有一个直线预测的Y值,我们叫做Y预测,回归线使得每个Y的实际值与预测值之差得平方和最小。_基于matlab栅格数据一元线性回归

vue 百度地图/天地图设置铺满屏幕100%,解决空隙问题_vue百度地图 100vw宽度不生效-程序员宅基地

文章浏览阅读491次。vue 百度地图/天地图设置铺满屏幕100%,解决空隙问题_vue百度地图 100vw宽度不生效

推荐文章

热门文章

相关标签