做一個官網,nuxt按需引入了antd_vue組件庫,但是項目打包時,圖標卻又500K+,經過排查,發現icon和其他組件環環相扣的。如下:(我引入了這個翻頁的組件,里面包含了兩個翻頁的圖標)
但是它里面確實直接引入了所有的icon圖標。解決方案:
const path = require('path');
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const CompressionPlugin = require("compression-webpack-plugin");
export default {
build: {
extractCSS: true,
// analyze: true,
// 為防止重復打包
vendor: ['axios'],
analyza: {
analyzeMode: 'static'
},
plugins: [
// 內存占用大小查看
// new BundleAnalyzerPlugin(),
// gzip壓縮
new CompressionPlugin({
test: /\.(js|css|png|jpg)(\?.*)?$/i, //需要壓縮的文件正則
threshold: 10240, //文件大小大於這個值時啟用壓縮
deleteOriginalAssets: false, //壓縮后保留原文件
})
],
assetFilter: function(assetFilename) {
return assetFilename.endsWith('.js');
},
optimization: {
splitChunks: {
minSize: 10000,
maxSize: 250000
}
},
extend(config, {
isDev,
isClient
}) {
// 通過配置別名,處理圖標過大問題,當請求這個@ant-design/icons/lib/dist$圖標地址時,請求本地按需加載的icon.js
config.resolve.alias['@ant-design/icons/lib/dist$'] = path.resolve(__dirname, './plugins/icons.js') }
},
}

