在看antd使用的时候官方提到了强烈推荐使用按需加载,按需加载可以在引用组件的时候引入组件对应的样式,而我们通常只会用到一个UI组件库中的极少一部分
首先安装babel-plugin-import
npm install babel-plugin-import --save-dev
然后在根目录(package.json同级)下新建【.babelrc】文件,添加如下代码
// .babelrc or babel-loader option
{
"plugins": [
["import", { libraryName: "antd-mobile", style: "css" }] // `style: true` 会加载 less 文件
]
}
//如果同时引用了antd-mobile跟antd需要改成:
{
"plugins": [
["import", [{ "libraryName": "antd-mobile", "style": "css" },{ "libraryName": "antd", "style": "css" }]] // `style: true` 会加载 less 文件
]
}
babelrc配置完之后,把项目跑起来发现并不起作用,组件样式并没有加上,???
这里其实是这个脚手架,默认是不使用.babelrc的,可以在node_module/react-scripts/config/webpack.config.dev.js(跟webpack.config.prod.js)中看到:只要把false改成true再重新npm start一下就好了
后面用的antd组件的地方直接引用就行了,不用再去引样式
import { Button } from 'antd-moblie'
打包之后已从原来4.91M压缩到了2.45M,优化了一半大小
网友评论