react typescript 使用antd 按需引入和使用自定义主题

最近在前端开发和使用过程中,发现了antd只要与其样式的类名相同就会出现覆盖问题。查看官方文档以及踩了很多坑之后,确定此放发可行

1. 在自己的工程中安装相关依赖

yarn add antd

按需加载

yarn add babel-plugin-import


自定义主题

yarn add craco-antd

yarn add @craco/craco

按需加载与自定义主题之间需要less-loader, 本项目使用craco-less

yarn add craco-less

 

注意:在安装过程中,我使用cnpm或者npm总是出现各种各样的问题,不是很稳定。通过使用yarn之后,排除了相关问题,其中yarn相对稳定

2.  在项目的根目录创建文件

craco.config.js 文件名一定不能错误,否则找不到文件

const CracoLessPlugin = require('craco-less');

module.exports = {
plugins: [
{
plugin: CracoLessPlugin,
options: {
lessLoaderOptions: {
lessOptions: {
modifyVars: { '@primary-color': 'orange' },
javascriptEnabled: true,
},
},
},
},
],
/*babel 这里是新增的 按需加载 */
babel: {
plugins: [
['import', { libraryName: 'antd', libraryDirectory: 'es', style: true }],
['@babel/plugin-proposal-decorators', { legacy: true }]
]
}
/*新增结束*/
};

3. 修改package.json文件
需要修改的地方我增加了背景色
"start": "craco start",
"build": "craco build",
"test": "craco test",

完成的文件是
{
"name": "lab",
"version": "0.1.0",
"private": true,
"dependencies": {
"@craco/craco": "^6.4.3",
"@testing-library/jest-dom": "^5.16.1",
"@testing-library/react": "^12.1.2",
"@testing-library/user-event": "^13.5.0",
"@types/jest": "^27.4.0",
"@types/node": "^16.11.21",
"@types/react": "^17.0.38",
"@types/react-dom": "^17.0.11",
"antd": "^4.18.4",
"babel-plugin-import": "^1.13.3",
"craco-antd": "^1.19.0",
"craco-less": "^2.0.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "5.0.0",
"typescript": "^4.5.5",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}


posted @ 2022-01-21 17:05  李悠然  阅读(595)  评论(0编辑  收藏  举报