66 lines
1.6 KiB
JavaScript
66 lines
1.6 KiB
JavaScript
const { defineConfig } = require('@vue/cli-service')
|
|
const path = require('path')
|
|
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
|
|
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
|
|
const CompressionPlugin = require('compression-webpack-plugin')
|
|
|
|
|
|
const isProduction = process.env.NODE_ENV === 'production';
|
|
|
|
function resolve(dir) {
|
|
return path.join(__dirname, dir)
|
|
}
|
|
|
|
module.exports = defineConfig({
|
|
transpileDependencies: true,
|
|
publicPath: "./",
|
|
productionSourceMap: false,
|
|
devServer: {
|
|
port: 9000,
|
|
},
|
|
chainWebpack: (config) => {
|
|
|
|
config.plugins.delete('prefetch');
|
|
config.plugins.delete('preload');
|
|
|
|
config.resolve.alias
|
|
.set('@', resolve('src'))
|
|
.set('@less', resolve('src/assets/less/page'))
|
|
},
|
|
configureWebpack: (config) => {
|
|
|
|
|
|
if (isProduction) {
|
|
config.plugins.push(
|
|
// 生产环境自动删除console
|
|
new UglifyJsPlugin({
|
|
uglifyOptions: {
|
|
output: {
|
|
comments: false
|
|
},
|
|
compress: {
|
|
drop_console: true,
|
|
drop_debugger: false,
|
|
pure_funcs: ['console.log']// 移除console
|
|
},
|
|
warnings: false,
|
|
},
|
|
sourceMap: false,
|
|
parallel: true
|
|
})
|
|
);
|
|
|
|
return {
|
|
plugins: [
|
|
new BundleAnalyzerPlugin(),
|
|
new CompressionPlugin({
|
|
test: /\.js$|\.html$|\.css/, //匹配文件名
|
|
threshold: 102400, //对超过10k的数据进行压缩
|
|
deleteOriginalAssets: false //是否删除原文件
|
|
})
|
|
]
|
|
};
|
|
}
|
|
}
|
|
})
|