master
parent
0f636e5602
commit
0f57674c69
File diff suppressed because it is too large
Load Diff
@ -1,26 +1,83 @@
|
|||||||
|
const { DefinePlugin } = require('webpack');
|
||||||
|
const TerserPlugin = require('terser-webpack-plugin');
|
||||||
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
|
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
|
||||||
|
const CompressionWebpackPlugin = require('compression-webpack-plugin');
|
||||||
|
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
devServer: {
|
devServer: {
|
||||||
|
|
||||||
proxy: {
|
proxy: {
|
||||||
'/api': {
|
'/api': {
|
||||||
target: 'http://192.168.10.54:9100/v1',
|
target: 'http://192.168.10.54:9100/v1',
|
||||||
changOrigin:true,
|
changeOrigin: true,
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
'^/api':''
|
'^/api': '',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
configureWebpack: {
|
configureWebpack: {
|
||||||
optimization: {
|
optimization: {
|
||||||
minimizer: [
|
minimizer: [
|
||||||
|
new TerserPlugin({
|
||||||
|
terserOptions: {
|
||||||
|
compress: {
|
||||||
|
drop_console: true, // 删除 console
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
new CssMinimizerPlugin(),
|
new CssMinimizerPlugin(),
|
||||||
],
|
],
|
||||||
splitChunks: {
|
splitChunks: {
|
||||||
chunks: 'all'
|
chunks: 'all',
|
||||||
}
|
maxInitialRequests: Infinity,
|
||||||
}
|
minSize: 20000, // 生成块的最小大小
|
||||||
}
|
maxSize: 500000, // 生成块的最大大小
|
||||||
}
|
cacheGroups: {
|
||||||
|
vendors: {
|
||||||
|
test: /[\\/]node_modules[\\/]/,
|
||||||
|
name(module) {
|
||||||
|
const packageName = module.context.match(
|
||||||
|
/[\\/]node_modules[\\/](.*?)([\\/]|$)/
|
||||||
|
)[1];
|
||||||
|
return `npm.${packageName.replace('@', '')}`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
runtimeChunk: 'single',
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new CompressionWebpackPlugin({
|
||||||
|
test: /\.(js|css|html|svg)$/, // 需要压缩的文件类型
|
||||||
|
threshold: 10240, // 资源超过10KB时压缩
|
||||||
|
deleteOriginalAssets: false, // 是否删除原始文件
|
||||||
|
}),
|
||||||
|
new BundleAnalyzerPlugin({
|
||||||
|
analyzerMode: 'static', // 生成静态报告文件
|
||||||
|
openAnalyzer: false, // 打包后是否自动打开报告
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
chainWebpack: config => {
|
||||||
|
config.plugin('define').use(DefinePlugin, [
|
||||||
|
{
|
||||||
|
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
config.module
|
||||||
|
.rule('images')
|
||||||
|
.use('url-loader')
|
||||||
|
.loader('url-loader')
|
||||||
|
.tap(options => ({
|
||||||
|
limit: 8192, // 图片小于8KB时转换为base64
|
||||||
|
fallback: {
|
||||||
|
loader: 'file-loader',
|
||||||
|
options: {
|
||||||
|
name: 'img/[name].[hash:8].[ext]',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
};
|
||||||
|
Loading…
Reference in New Issue