react 按需引入 antd

本文介绍了如何在React应用中引入react-app-rewired和customize-cra来修改配置,实现Ant Design的按需加载和自定义主题。步骤包括安装相关依赖,修改package.json的启动脚本,创建config-overrides.js文件并配置lessLoader。通过这些设置,可以减少应用体积并改变Antd组件的颜色。同时,也提到了Antd Mobile的配置区别以及如何仅使用less。

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

npm install antd --save

引入 react-app-rewired和customize-cra 并修改 package.json 里的启动配置
npm install react-app-rewired customize-cra --save-dev

将package.json 的 "scripts" 修改为
"scripts": {

    "start": "react-app-rewired start",

    "build": "react-app-rewired build",

    "test": "react-app-rewired test",

    "eject": "react-scripts eject"

  },

安装 babel-plugin-import
npm install babel-plugin-import --save-dev

在根目录下创建覆盖webpack的 config-overrides.js 文件 并写入以下代码
 

const { override, fixBabelImports } = require('customize-cra');

module.exports = override(

    fixBabelImports('import', {

        libraryName: 'antd',

        libraryDirectory: 'es',

        style: 'css',

    })

然后在页面中写入,重启项目即可看到一个蓝色的按钮


 

若你还需要自定义样式,你需要安装 less
npm i less less-loader -D  (less-loader建议使用 7.3.0 版本)
然后修改 config-overrides.js 文件

const { override, fixBabelImports, addLessLoader } = require('customize-cra');

module.exports = override(

    fixBabelImports('import', {

        libraryName: 'antd',

        libraryDirectory: 'es',

        style: true,

    }),

    addLessLoader({

        lessOptions: {

            javascriptEnabled: true,

            modifyVars: { '@primary-color': '#1DA57A' },

        }

    }),

);

重启项目,如果你看到一个绿色的按钮,说明你自定义主题成功了

附上包版本信息


最后,对自己的备忘录:

antd mobile 的配置与网页端只有 libraryName: 'antd-mobile',不一样。antd-mobile5.0以上不需要做按需加载。其依据webpack的Tree Shaking自配按需加载


如果需要安装less 不需要antd,可尝试仅安装
npm install react-app-rewired customize-cra --save-dev

 修改package.json的启动配置后修改 config-overrides.js 文件为
 

const { override, addLessLoader } = require('customize-cra');

module.exports = override(

    addLessLoader({

        lessOptions: {

            javascriptEnabled: true,

        }

    }),

);

<think>嗯,用户想在React 19项目中全局引入antd库。我要先回忆一下antdReact中的常规配置方法,然后看看React 19有没有什么特别的变化。 首先,常规步骤是安装antd和它的依赖,比如react-app-rewired和customize-cra,用来覆盖create-react-app的默认配置。因为CRA默认不支持按加载,所以要修改config-overrides.js文件,使用babel-plugin-import插件来按引入组件和样式。不过,用户提到的是全局引入,可能要不同的处理? 然后,用户提到的是React 19,但根据之前的引用,比如引用[4]中的内容,React 19中引入message组件要用到useMessage钩子和contextHolder。这说明在React 19中,某些antd组件可能要特定的使用方式,特别是涉及到上下文的部分。但用户的问题是关于全局引入的配置,可能更多关注的是样式的全局加载和组件的按导入。 另外,用户可能已经按照之前的步骤安装了antd,但不确定是否要额外的配置来全局生效。例如,在App.js引入antd的样式文件,或者通过修改全局的less变量来定制主题。根据引用[2]和[3],使用less的情况下可能要配置webpack来处理less文件,并且修改主题颜色。不过用户的问题可能更基础,只是如何让antd在整个项目中可用,而不要在每个组件中单独引入。 还要注意,React 19可能有一些变化,比如是否要使用新的JSX转换方式,或者是否有破坏性的变更影响antd的使用。例如,引用[4]中提到在React 19中message组件要调用useMessage方法,这说明某些组件的用法可能有所调整,但配置方面的全局引入可能还是类似的步骤。 总结一下,可能的步骤是: 1. 安装antd和相关工具(react-app-rewired, customize-cra, babel-plugin-import)。 2. 修改package.json中的scripts,使用react-app-rewired启动。 3. 创建config-overrides.js文件,配置按加载和样式处理。 4. 在入口文件(如App.js)中引入antd的全局样式。 5. 测试是否可以在任意组件中使用antd组件而不要单独引入样式。 要验证这些步骤是否适用于React 19,特别是是否有新的配置方法或已知问题。例如,是否仍然要eject或者使用CRACO(Create React App Configuration Override)来代替react-app-rewired。另外,检查antd官方文档是否有针对React 19的特别说明,确保配置方法仍然有效。</think>### React 19项目中全局引入antd的配置方法 #### 1. 安装依赖 ```bash npm install antd @ant-design/icons react-app-rewired customize-cra --save # 或 yarn add antd @ant-design/icons react-app-rewired customize-cra ``` #### 2. 修改项目配置 在项目根目录创建`config-overrides.js`: ```javascript const { override, fixBabelImports } = require('customize-cra'); module.exports = override( fixBabelImports('import', { libraryName: 'antd', libraryDirectory: 'es', style: 'css' // 或 true 使用less(额外配置) }) ); ``` #### 3. 修改package.json ```diff "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" } ``` #### 4. 全局样式配置 在`src/App.js`中引入antd基础样式: ```javascript import 'antd/dist/reset.css'; // React 19推荐使用reset.css ``` #### 5. 使用组件(无单独引入样式) ```javascript import { Button } from 'antd'; function App() { return <Button type="primary">全局生效的按钮</Button>; } ``` #### 注意事项: 1. 使用`message`等要上下文的组件时,按新规范配置: ```javascript const [messageApi, contextHolder] = message.useMessage(); // 要在render中放置contextHolder[^4] ``` 2. 主题定制使用`@craco/craco`替代方案(更稳定): ```javascript // craco.config.js module.exports = { babel: { plugins: [ ['import', { libraryName: 'antd', style: true }] ] } }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值