|
@@ -1,15 +1,138 @@
|
|
|
const path = require('path')
|
|
|
+const CompressionPlugin = require("compression-webpack-plugin")
|
|
|
|
|
|
+const { config } = require('process');
|
|
|
function resolve(dir) {
|
|
|
return path.join(__dirname, dir)
|
|
|
}
|
|
|
-
|
|
|
module.exports = {
|
|
|
publicPath: "./",
|
|
|
productionSourceMap: false,
|
|
|
+ // 入口设置
|
|
|
+ pages: {
|
|
|
+ datav: {
|
|
|
+ entry: 'src/pages/datav/main.js',
|
|
|
+ template: 'src/pages/datav/index.html',
|
|
|
+ title: 'datav',
|
|
|
+ filename: 'datav.html',
|
|
|
+ chunks: ['chunk-libs', 'chunk-commons','datav','chunk-element-ui']
|
|
|
+ },
|
|
|
+ index: {
|
|
|
+ entry: 'src/main.js',
|
|
|
+ template: 'public/index.html',
|
|
|
+ title: 'index.html',
|
|
|
+ filename: 'index.html',
|
|
|
+ chunks: ['index','chunk-libs','chunk-commons',
|
|
|
+ 'chunk-element-ui','chunk-jeeplus-form',
|
|
|
+ 'chunk-jeeplus-filemanager','chunk-jeeplus-gencode',
|
|
|
+ 'chunk-jeeplus-flowable', 'chunk-echarts','chunk-brace'
|
|
|
+ ,'chunk-vxe-table','chunk-ali-oss','chunk-exceljs'
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ },
|
|
|
chainWebpack: (config) => {
|
|
|
config.resolve.alias.set('@/', resolve('src'))
|
|
|
- // config.plugins.delete('prefetch')
|
|
|
+
|
|
|
+ // config
|
|
|
+ // .plugin('webpack-bundle-analyzer')
|
|
|
+ // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin);
|
|
|
+ // if (process.env.NODE_ENV === 'production') {
|
|
|
+ config.plugin('compressionPlugin').use(new CompressionPlugin({
|
|
|
+ test: new RegExp('\\.(js|css)$'), // 匹配文件名
|
|
|
+ threshold: 10240, // 对超过10k的数据压缩
|
|
|
+ deleteOriginalAssets: false, // 不删除源文件
|
|
|
+ minRatio: 0.8,
|
|
|
+ algorithm:'gzip'
|
|
|
+ }))
|
|
|
+ // }
|
|
|
+
|
|
|
+ },
|
|
|
+ configureWebpack: (config) => {
|
|
|
+ let optimization = {
|
|
|
+ splitChunks: {
|
|
|
+ chunks: "all",
|
|
|
+ minSize: 30 * 1024, // 允许新拆出 chunk 的最小体积,也是异步 chunk 公共模块的强制拆分体积
|
|
|
+ cacheGroups: {
|
|
|
+ libs: { // 第三方库
|
|
|
+ name: "chunk-libs",
|
|
|
+ test: /[\\/]node_modules[\\/]/,
|
|
|
+ priority: 10,
|
|
|
+ chunks: "initial", // 只打包初始时依赖的第三方
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'element-ui': {
|
|
|
+ name: "chunk-element-ui",
|
|
|
+ test: /[\\/]node_modules[\\/]element-ui[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'jeeplus-filemanager': {
|
|
|
+ name: "chunk-jeeplus-filemanager",
|
|
|
+ test: /[\\/]node_modules[\\/]jeeplus-filemanager[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'jeeplus-form': {
|
|
|
+ name: "chunk-jeeplus-form",
|
|
|
+ test: /[\\/]node_modules[\\/]jeeplus-form[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'jeeplus-gencode': {
|
|
|
+ name: "chunk-jeeplus-gencode",
|
|
|
+ test: /[\\/]node_modules[\\/]jeeplus-gencode[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'jeeplus-flowable': {
|
|
|
+ name: "chunk-jeeplus-flowable",
|
|
|
+ test: /[\\/]node_modules[\\/]jeeplus-flowable[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'echarts': {
|
|
|
+ name: "chunk-echarts",
|
|
|
+ test: /[\\/]node_modules[\\/]echarts[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'brace': {
|
|
|
+ name: "chunk-brace",
|
|
|
+ test: /[\\/]node_modules[\\/]brace[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'vxe-table': {
|
|
|
+ name: "chunk-vxe-table",
|
|
|
+ test: /[\\/]node_modules[\\/]vxe-table[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'ali-oss': {
|
|
|
+ name: "chunk-ali-oss",
|
|
|
+ test: /[\\/]node_modules[\\/]ali-oss[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ 'exceljs': {
|
|
|
+ name: "chunk-exceljs",
|
|
|
+ test: /[\\/]node_modules[\\/]exceljs[\\/]/,
|
|
|
+ priority: 20,
|
|
|
+ enforce: true
|
|
|
+ },
|
|
|
+ commons: { // 公共模块包
|
|
|
+ name: `chunk-commons`,
|
|
|
+ minChunks: 2,
|
|
|
+ priority: 0,
|
|
|
+ reuseExistingChunk: true,
|
|
|
+ enforce: true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Object.assign(config, {
|
|
|
+ optimization
|
|
|
+ })
|
|
|
},
|
|
|
|
|
|
css: {
|
|
@@ -21,23 +144,6 @@ module.exports = {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
- // 入口设置
|
|
|
- pages: {
|
|
|
- datav: {
|
|
|
- entry: 'src/pages/datav/main.js',
|
|
|
- template: 'src/pages/datav/index.html',
|
|
|
- title: 'datav',
|
|
|
- filename: 'datav.html',
|
|
|
- chunks: ['chunk-vendors', 'chunk-common', 'datav']
|
|
|
- },
|
|
|
- index: {
|
|
|
- entry: 'src/main.js',
|
|
|
- template: 'public/index.html',
|
|
|
- title: 'index.html',
|
|
|
- filename: 'index.html'
|
|
|
- }
|
|
|
- },
|
|
|
devServer: {
|
|
|
index: '/index.html', // 运行时,默认打开index页面
|
|
|
port: 3000,
|
|
@@ -60,4 +166,4 @@ module.exports = {
|
|
|
},
|
|
|
|
|
|
lintOnSave: undefined
|
|
|
-}
|
|
|
+}
|