react-app中的antd按需引入

本文详细介绍了在React项目中如何使用react-app-rewired和customize-cra插件,结合babel-plugin-import实现Ant Design组件的按需加载,减少项目体积,提高加载速度。同时,针对项目eject后的配置调整进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做react的项目,引用antd时想要按需引入在网上找了很多没有一个比较完美的解决方法,都是一知半解,也可能是库更新了,打算自己做个总结

1.按照官方给的方法
  • 先安装react-app-rewiredcustomize-cra
    npm install react-app-rewired customize-cra
    
    1. 修改package.json
    /* package.json */
    "scripts": {
    -   "start": "react-scripts start",
    +   "start": "react-app-rewired start",
    -   "build": "react-scripts build",
    +   "build": "react-app-rewired build",
    -   "test": "react-scripts test",
    +   "test": "react-app-rewired test",
    }
    
    1. 在项目根目录创建一个 config-overrides.js 用于修改默认配置。
    module.exports = function override(config, env) {
    // do stuff with the webpack config...
    return config;
    };
    
    1. 使用 babel-plugin-import
    npm install babel-plugin-import
    
    1. 并修改 config-overrides.js 文件
    + const { override, fixBabelImports } = require('customize-cra');
    
    - module.exports = function override(config, env) {
    -   // do stuff with the webpack config...
    -   return config;
    - };
    + module.exports = override(
    +   fixBabelImports('import', {
        +     libraryName: 'antd',
    +     libraryDirectory: 'es',
    +     style: 'css',
    +   }),
    + );    
    
    1. 即可按需引入
    import { Button } from 'antd'
    
2. npm run eject后对于原项目antd按需引入的影响
  1. 在项目eject之后同城需要修改packjson的scripts此时react-app-rewired已经不管用了,再用官方给的方法就不会在起作用了,这样config-overrides.js就没有必须要去使用的意义
  2. 我们只需要去修改babel的设置即可,不需要再去写一个**.babelrc**文件,这样会产生冲突
  3. 因为run eject以后在packjson里面有babel
    "babel": {
    "presets": [
      "react-app"
    ],
    "plugins": [
      [
          "import",
          { "libraryName": "antd-mobile", "style": "css"
          }
      ] 
    ]
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值