打包优化vue.config.js
const port = 8080;
const IS_PRODUCTION = process.env.NODE_ENV == "production";
const CompressionPlugin = require("compression-webpack-plugin");
const UglifyJsWebpackPlugin = require("uglifyjs-webpack-plugin");
const externals = {
"ali-oss": "OSS"
};
module.exports = {
publicPath: "/<服务器上项目所在的文件夹名>/",
assetsDir: "static",
filenameHashing: false,
chainWebpack: config => {
if (IS_PRODUCTION) {
config.entry("main").add("babel-polyfill");
config.plugins.delete("prefetch").delete("preload");
config.externals(externals);
config
.plugin("compressionPlugin")
.use(CompressionPlugin)
.tap(() => [
{
test: /\.js$|\.html$|\.css/,
threshold: 10240,
deleteOriginalAssets: false
}
]);
config.optimization.minimizer([
new UglifyJsWebpackPlugin({
sourceMap: false,
uglifyOptions: {
warnings: false,
compress: {
drop_console: true,
drop_debugger: true
}
}
})
]);
}
config.module
.rule("images")
.use("image-webpack-loader")
.loader("image-webpack-loader")
.options({
bypassOnDebug: true
})
.end();
},
devServer: {
port: port,
host: "0.0.0.0",
https: false,
open: false,
overlay: {
warnings: false,
errors: true
},
proxy: {
[process.env.VUE_APP_BASE_API]: {
target: process.env.VUE_APP_BASE_URL,
changeOrigin: true,
pathRewrite: {
["^" + process.env.VUE_APP_BASE_API]: ""
}
}
}
},
css: {
loaderOptions: {
stylus: {
"resolve url": true,
import: []
}
}
}
};