vue 打包命令修改

pull/17/head
youngS 4 years ago
parent 9157a9b43f
commit 25fb257a53
  1. 2
      fir_client/package.json
  2. 95
      fir_client/vue.config.js

@ -32,6 +32,8 @@
"babel-plugin-component": "^1.1.1", "babel-plugin-component": "^1.1.1",
"eslint": "^5.16.0", "eslint": "^5.16.0",
"eslint-plugin-vue": "^5.0.0", "eslint-plugin-vue": "^5.0.0",
"html-webpack-plugin": "^5.3.1",
"script-ext-html-webpack-plugin": "^2.1.5",
"vue-template-compiler": "^2.6.10" "vue-template-compiler": "^2.6.10"
}, },
"eslintConfig": { "eslintConfig": {

@ -4,10 +4,11 @@ const path = require('path');
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir); return path.join(__dirname, dir);
} }
module.exports = {
pages: { const argv = process.argv;
index: {
const index={
// page 的入口 // page 的入口
entry: 'src/main.js', entry: 'src/main.js',
// 模板来源 // 模板来源
@ -16,43 +17,50 @@ module.exports = {
filename: 'index.html', filename: 'index.html',
// 当使用 title 选项时, // 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title> // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: 'FlyApp', title: 'Fly分发平台',
// 在这个页面中包含的块,默认情况下会包含 // 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。 // 提取出来的通用 chunk 和 vendor chunk。
chunks: ['chunk-vendors', 'chunk-common', 'index'] chunks: ['chunk-vendors', 'chunk-common', 'index']
}, };
short: { const mshort={
// page 的入口 // page 的入口
entry: 'src/short.js', entry: 'src/main.short.js',
// entry: 'src/main.short.js',
// 模板来源 // 模板来源
template: 'public/short.html', template: 'public/short.html',
// 在 dist/short.html 的输出 // 在 dist/short.html 的输出
filename: 'short.html', filename: 'mshort.html',
// 当使用 title 选项时, // 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title> // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: '应用下载', title: '应用下载',
// 在这个页面中包含的块,默认情况下会包含 // 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。 // 提取出来的通用 chunk 和 vendor chunk。
chunks: ['chunk-vendors', 'chunk-common', 'short'] chunks: ['chunk-vendors', 'chunk-common', 'mshort']
}, };
mshort: { const short={
// page 的入口 // page 的入口
// entry: 'src/short.js', entry: 'src/short.js',
entry: 'src/main.short.js',
// 模板来源 // 模板来源
template: 'public/short.html', template: 'public/short.html',
// 在 dist/short.html 的输出 // 在 dist/short.html 的输出
filename: 'mshort.html', filename: 'short.html',
// 当使用 title 选项时, // 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title> // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
title: '应用下载', title: '应用下载',
// 在这个页面中包含的块,默认情况下会包含 // 在这个页面中包含的块,默认情况下会包含
// 提取出来的通用 chunk 和 vendor chunk。 // 提取出来的通用 chunk 和 vendor chunk。
chunks: ['chunk-vendors', 'chunk-common', 'mshort'] chunks: ['chunk-vendors', 'chunk-common', 'short']
};
let pages = {index,short,mshort};
const page = argv[3];
if(page){
for(const key of Object.keys(pages)){
if(key === page){
pages = {key:pages[key]}
} }
}
}, }
module.exports = {
pages: pages,
productionSourceMap: false, productionSourceMap: false,
configureWebpack: { configureWebpack: {
// provide the app's title in webpack's name field, so that // provide the app's title in webpack's name field, so that
@ -81,6 +89,7 @@ module.exports = {
} }
config.optimization.splitChunks({ config.optimization.splitChunks({
cacheGroups: { cacheGroups: {
vendors: { vendors: {
@ -94,6 +103,56 @@ module.exports = {
} }
}); });
// set preserveWhitespace
config.module
.rule('vue')
.use('vue-loader')
.loader('vue-loader')
.tap(options => {
options.compilerOptions.preserveWhitespace = true;
return options
})
.end();
config.when(!IS_PROD,
config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end();
config
.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // only package third parties that are initially dependent
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
}
}
});
config.optimization.runtimeChunk('single');
}
);
} }

Loading…
Cancel
Save