1 const fs = require('fs')
2 const path = require('path')
3 const webpack = require('webpack')
4 const UglifyJsPlugin = require('uglifyjs-webpack-plugin') // 代碼壓縮插件
5
6
7 // 你想要打包的模塊的數(shù)組
8 let vendors = [
9 [
10 "echarts",
11 "wangeditor",
12 "element-ui",
13 "axios"
14 ],
15 [
16 'vue/dist/vue.esm.js',
17 'vue-router',
18 'vuex'
19 ]
20 ]
21
22 module.exports = {
23 entry: {
24 // 多入口,單入口情況,只需寫一個,key值自定義,value值為數(shù)組
25 xuAdmin0: vendors[0],
26 xuAdmin1: vendors[1]
27 },
28 output: {
29 path: path.join(__dirname, "../static/dll"), // 生成的文件存放路徑
30 filename: "[name].[chunkhash].dll.js", // 主要是給DllPlugin中的name使用,是給DllPlugin中的name使用
31 library: "[name]_[chunkhash]" // 故這里需要和webpack.DllPlugin中的`name: '[name]_library',`保持一致(生成文件的映射關(guān)系,與下面DllPlugin中配置對應)
32 },
33 plugins: [
34 // Dllplugin 它可以大大縮短編譯的時間,提升構(gòu)建速度
35
36 /**
37 * 重點:這里引入的Dllplugin插件,該插件將生成一個manifest.json文件,該文件供webpack.config.js中加入的DllReferencePlugin使用,
38 * 使我們所編寫的源文件能正確地訪問到我們所需要的靜態(tài)資源(運行時依賴包)
39 * 鏈接:https://www.jianshu.com/p/9c7815024bf5
40 */
41
42
43 new webpack.DllPlugin({
44 // path.join(path1,path2,path3.......) 將路徑片段使用特定的分隔符(window:\)連接起來形成路徑,并規(guī)范化生成的路徑。若任意一個路徑片段類型錯誤,會報錯。
45 path: path.join(__dirname, "../dllManifest", "[name]-manifest.json"), // 會生成一個json文件,里面是關(guān)于dll.js的一些配置信息
46 name: "[name]_[chunkhash]", // 與上面output中配置對應
47 context: __dirname // 上下文環(huán)境路徑(必填,為了與DllReferencePlugin存在與同一上下文中)
48 }),
49
50 // 壓縮打包的文件
51 new UglifyJsPlugin({
52 uglifyOptions: {
53 warnings: false
54 }
55 }),
56 ]
57 }