今天像往常同樣打包更新完文件後準備更新個人博客時,發現打完包以後的首頁文件特別大,仔細想一想首頁也沒用到多少模塊,確定是有些不該該打包的東西也打進去了。因而用了 webpack-bundle-analyzer 插件查看打包後的文件的詳細狀況。react
因而發現webpack
文件把整個 @ant-design/icons/lib 都打包進去了, 讓文件平白無故多了500多kb,就算開啓gzip後也要145kb。git
原來我項目中用到了Antd中的Icon組件,在Icon組件文件中看到github
把整個 @ant-design/icons/lib都引入了組件,因此打包時也都Antd全部字體也就打包進了文件。web
只引入咱們須要的Antd中要的Icon文件。bash
建立antdIcons.js,從@ant-design中導出只是你想要的Icon文件antd
在安裝Antd時,@ant-design/icons 已經做爲依賴安裝過了,因此不用從新安裝。字體
// antdIcons.js
export {default as MenuOutline} from '@ant-design/icons/lib/outline/MenuOutline';
複製代碼
而後配置webpack的resolve.aliasui
讓解析引入包的地址時,變成解析成你配置的地址spa
// webpack配置中
resolve: {
alias:{
’@ant-design/icons/lib/dist$': path.resolve(__dirname, 'utils/antdIcon.js') } } 複製代碼
配置以後咱們在看打包後 webpack-bundle-analyzer 插件的輸出
如今只是引入咱們須要的icon,如今只佔了文件很是小的一部分
不使用Antd的Icon組件,使用阿里iconfont 挑選本身想要的文件在項目中引入iconfont文件。
// antdIcons.js
export { MenuOutline } from '@ant-design/icons';
複製代碼
這種寫法會使webpack4解析時不能進行tree-shaking,最後也會把整個@ant-design/icons打包進去