最近在开发远程组件时,发现antdv 按需引入只使用了其一个组件,但是打包出来之后通过 webpack-bundle-analyzer 分析发现@ant-design/icons占用很大的空间,如下:
查看源码之后,我们可以看到 antdv icon组件中是引入全部 icons 不是按需引入,这里造成了很多不必要的空间浪费
优化步骤:
-
我们可以通过在项目中安装对应版本的
@ant-design/icons,从全量改完按需引入首先得把它的依赖装上,至于装的什么版本,可以从node_modules中ant-design-vue的package.json查看当前依赖的版本。我这里用的是1.7.8的版本,对应的icons版本是2.1.1。 -
新建一个按需引入icon 的 antdIcon.js。
比如我就按需引入了antdv 的 Modal 组件,这里只使用到 close 图标:
// 按需引入 antd 图标
// close 图标
export { default as CloseOutline } from '@ant-design/icons/lib/outline/CloseOutline'
-
vue.config.js配置
找到
configureWebpack配置,并添加resolve.alias配置,如下:configureWebpack: { resolve: { alias: { '@ant-design/icons/lib/dist$': path.resolve(__dirname, '这里为antdIcon.js路径') } } }
最后:
这样在打包出来之后,我们的包体积就小很多了!