cool-admin-vue/vue.config.js
2021-03-10 13:06:14 +08:00

144 lines
2.6 KiB
JavaScript

const HardSourceWebpackPlugin = require("hard-source-webpack-plugin");
const isProduction = process.env.NODE_ENV === "production";
// 代理列表
const PROXY_LIST = {
"/dev": {
target: "http://127.0.0.1:8001",
changeOrigin: true,
pathRewrite: {
"^/dev": ""
}
},
"/ap": {
target: "https://admin.cool-js.cool",
changeOrigin: true,
pathRewrite: {
"^/ap": ""
}
},
"/fz": {
target: "http://xfz520231.utools.club",
changeOrigin: true,
pathRewrite: {
"^/fz": ""
}
},
"/oss-upload": {
target: "https://cool-admin-pro.oss-cn-shanghai.aliyuncs.com",
changeOrigin: true,
pathRewrite: {
"^/oss-upload": ""
}
},
"/pro": {
target: "https://show.cool-admin.com",
changeOrigin: true,
pathRewrite: {
"^/pro": "/api"
}
}
}
module.exports = {
publicPath: "/",
lintOnSave: true,
productionSourceMap: false,
parallel: require("os").cpus().length > 1,
css: {
extract: isProduction,
sourceMap: false,
loaderOptions: {
sass: {
prependData: `@import "@/assets/css/common.scss";`
}
}
},
devServer: {
port: 9000,
open: false,
compress: false,
overlay: {
warnings: false,
errors: true
},
disableHostCheck: true,
proxy: PROXY_LIST
},
chainWebpack: config => {
// svg
config.module.rule("svg").uses.clear();
config.module
.rule("svg-sprite-loader")
.test(/.svg$/)
.exclude.add(/node_modules/)
.end()
.use("svg-sprite-loader")
.loader("svg-sprite-loader")
.options({
symbolId: "[name]"
});
// 去掉元素之间空格
config.module
.rule("vue")
.use("vue-loader")
.loader("vue-loader")
.tap(options => {
options.compilerOptions.preserveWhitespace = true;
return options;
})
.end();
// 移除 prefetch 插件
config.plugins.delete("prefetch-index");
// 移除 preload 插件,避免加载多余的资源
config.plugins.delete("preload-index");
// 设置环境变量
config.plugin('define').tap(args => {
args[0]['process.env'].PROXY_LIST = JSON.stringify(PROXY_LIST)
return args
})
// 生产模式下
if (isProduction) {
config.performance.set("hints", false);
config.optimization.splitChunks({
chunks: "all",
cacheGroups: {
// 公用模块抽离
common: {
chunks: "initial",
minSize: 0,
minChunks: 2
},
// 第三方库抽离
vendor: {
priority: 1,
test: /node_modules/,
chunks: "initial",
minSize: 0,
minChunks: 2
}
}
});
}
},
configureWebpack: config => {
// config.plugins.push(new HardSourceWebpackPlugin());
}
};