📅  最后修改于: 2023-12-03 14:40:15.250000             🧑  作者: Mango
在使用 Create React App (CRA) 开发 React 应用时,通常需要自定义一些配置项,比如引入 Less、按需加载 Antd 等。这时候可以使用 react-app-rewired
进行定制化,但随着 React 的升级,其已经不再兼容,Craco 应运而生,能够用于自定义 CRA 的配置。本文将介绍如何使用 Craco 自定义 CRA 配置文件,并以 CSS 为主题进行说明。
在开始使用 Craco 之前,需要确保已经创建了 React 应用,如果没有,请参考 Create React App 文档 进行创建。
安装 Craco 可以使用 npm 或者 yarn,以下以 npm 为例:
npm install @craco/craco --save-dev
在根目录下新建一个 craco.config.js
文件,并进行如下配置:
module.exports = {
style: {
// ...
},
};
其中 style
是一个对象,用于配置样式的相关配置,比如依赖的 loader、配置项等。
如果需要在项目中编写 Less 样式,可以引入 craco-less
这个 Craco 插件。
首先安装 craco-less
:
npm install craco-less --save-dev
然后在 craco.config.js
中进行配置:
const CracoLessPlugin = require('craco-less');
module.exports = {
plugins: [{ plugin: CracoLessPlugin }],
};
最后在组件中使用 Less:
@import '~antd/dist/antd.less';
.selector {
background-color: @primary-color;
}
如果需要在开发环境中查看源代码,可以开启 sourceMap
。
module.exports = {
style: {
sass: {
loaderOptions: {
sourceMap: true,
},
},
},
};
通过 Craco 进行配置,可以集成 PostCSS 以支持后代选择器等新特性。
首先安装 craco-plugin-postcss
:
npm install craco-plugin-postcss --save-dev
然后在 craco.config.js
中进行配置:
module.exports = {
plugins: [
// ...
{
plugin: require('craco-plugin-postcss'),
options: {
postcssOptions: {
plugins: [
require('postcss-preset-env')({
autoprefixer: {
flexbox: 'no-2009',
},
stage: 3,
}),
],
},
},
},
],
};
如果项目中需要使用 Antd,可以使用 babel-plugin-import
进行按需加载。
首先安装 babel-plugin-import
:
npm install babel-plugin-import --save-dev
然后在 craco.config.js
中进行配置:
module.exports = {
babel: {
plugins: [
// ...
[
'import',
{
libraryName: 'antd',
libraryDirectory: 'es',
style: 'css',
},
],
],
},
};
以上配置完成后,在 package.json
中修改启动命令:
{
"scripts": {
"start": "craco start",
// ...
}
}
使用 npm start
启动应用即可。