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"
]
}
}
分类:
探索前端的路上
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2019-01-21 shrio中去掉 login;JSESSIONID