Skip to content

Commit 2d85d14

Browse files
committed
feat(webpack.dll): 增加 webpack dll 相关
1 parent 6486002 commit 2d85d14

File tree

9 files changed

+118
-6
lines changed

9 files changed

+118
-6
lines changed

build/webpack.dll.conf.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const path = require('path');
2+
const webpack = require('webpack');
3+
const CleanWebpackPlugin = require('clean-webpack-plugin');
4+
5+
// dll文件存放的目录
6+
const dllPath = '../public/vendor';
7+
8+
module.exports = {
9+
mode: 'production',
10+
entry: {
11+
// 需要提取的库文件
12+
vendor: ['vue', 'vue-router', 'vuex'],
13+
element: ['element-ui'],
14+
axios: ['axios']
15+
},
16+
output: {
17+
path: path.join(__dirname, dllPath),
18+
filename: '[name].dll.js',
19+
// vendor.dll.js中暴露出的全局变量名
20+
// 保持与 webpack.DllPlugin 中名称一致
21+
library: '[name]_[hash]'
22+
},
23+
plugins: [
24+
// 清除之前的dll文件
25+
new CleanWebpackPlugin(),
26+
// 设置环境变量
27+
new webpack.DefinePlugin({
28+
'process.env': {
29+
NODE_ENV: 'production'
30+
}
31+
}),
32+
// manifest.json 描述动态链接库包含了哪些内容
33+
new webpack.DllPlugin({
34+
path: path.join(__dirname, dllPath, '[name]-manifest.json'),
35+
// 保持与 output.library 中名称一致
36+
name: '[name]_[hash]',
37+
context: process.cwd()
38+
})
39+
]
40+
};

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"author": "liwb <[email protected]>",
77
"scripts": {
88
"serve": "vue-cli-service serve",
9+
"dll": "webpack -p --progress --config build/webpack.dll.conf.js",
910
"build": "vue-cli-service build",
1011
"lint": "vue-cli-service lint",
1112
"deploy": "npm run build && node build/zip.ts",
@@ -74,9 +75,11 @@
7475
"@vue/cli-plugin-pwa": "^3.0.4",
7576
"@vue/cli-plugin-typescript": "^3.0.4",
7677
"@vue/cli-service": "^3.0.4",
78+
"add-asset-html-webpack-plugin": "^3.1.3",
7779
"archiver": "^3.0.0",
7880
"chalk": "^2.4.2",
7981
"chokidar": "^2.1.5",
82+
"clean-webpack-plugin": "^2.0.1",
8083
"compression-webpack-plugin": "^2.0.0",
8184
"connect": "^3.6.6",
8285
"html-webpack-include-assets-plugin": "^1.0.6",
@@ -91,7 +94,8 @@
9194
"typescript": "^3.2.2",
9295
"vue-cli-plugin-element": "^1.0.1",
9396
"vue-template-compiler": "^2.5.21",
94-
"webpack-bundle-analyzer": "^3.0.3"
97+
"webpack-bundle-analyzer": "^3.0.3",
98+
"webpack-cli": "^3.3.2"
9599
},
96100
"husky": {
97101
"hooks": {

public/vendor/axios-manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"name":"axios_a690c116be06ebbf3952","content":{"./node_modules/axios/lib/utils.js":{"id":3,"buildMeta":{"providedExports":true}},"./node_modules/process/browser.js":{"id":18,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/defaults.js":{"id":53,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/bind.js":{"id":74,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/adapters/xhr.js":{"id":75,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/createError.js":{"id":76,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/cancel/isCancel.js":{"id":77,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/cancel/Cancel.js":{"id":78,"buildMeta":{"providedExports":true}},"./node_modules/axios/index.js":{"id":162,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/axios.js":{"id":163,"buildMeta":{"providedExports":true}},"./node_modules/is-buffer/index.js":{"id":164,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/Axios.js":{"id":165,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/normalizeHeaderName.js":{"id":166,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/settle.js":{"id":167,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/enhanceError.js":{"id":168,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/buildURL.js":{"id":169,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/parseHeaders.js":{"id":170,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/isURLSameOrigin.js":{"id":171,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/btoa.js":{"id":172,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/cookies.js":{"id":173,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/InterceptorManager.js":{"id":174,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/dispatchRequest.js":{"id":175,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/core/transformData.js":{"id":176,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/isAbsoluteURL.js":{"id":177,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/combineURLs.js":{"id":178,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/cancel/CancelToken.js":{"id":179,"buildMeta":{"providedExports":true}},"./node_modules/axios/lib/helpers/spread.js":{"id":180,"buildMeta":{"providedExports":true}}}}

public/vendor/axios.dll.js

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/vendor/element-manifest.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)