1、安装craco
见 antd4.x 官网,以下截自官网:create-react-app 的默认配置进行自定义,这里我们使用 craco (一个对 create-react-app 进行自定义配置的社区解决方案)。现在我们安装 craco 并修改 package.json 里的 scripts 属性。

yarn add @craco/craco
/* package.json */
"scripts": {
   "start": "craco start",
   "build": "craco build",
   "test": "craco test",
}

然后在项目根目录创建一个 craco.config.js 用于修改默认配置。

/* craco.config.js */
module.exports = {
  // ...
};

2、自定义主题
按照 配置主题 的要求,自定义主题需要用到类似less-loader 提供的 less 变量覆盖功能。我们可以引入 craco-less 来帮助加载 less 样式和修改变量。
首先把 src/App.css 文件修改为 src/App.less,然后修改样式引用为 less 文件。

/* src/App.js */
import './App.less';
/* src/App.less */
import '~antd/dist/antd.less';

然后安装 craco-less 并修改 craco.config.js 文件如下。

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

module.exports = {
  plugins: [
    {
      plugin: CracoLessPlugin,
      options: {
        lessLoaderOptions: {
          lessOptions: {
            modifyVars: { '@primary-color': '#1DA57A' },
            javascriptEnabled: true,
          },
        },
      },
    },
  ],
};

这里利用了less-loader 的 modifyVars 来进行主题配置,变量和其他配置方式可以参考 配置主题 文档。修改后重启 yarn start,如果看到一个绿色的按钮就说明配置成功了。
二、样式按需引入
在craco.config.js 的基础上,按需引入
首先下载yarn add babel-plugin-import

yarn add babel-plugin-import

编辑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 }]
    ]
  }
  /*新增结束*/
};

到这里就可以删掉之前引入的’~antd/dist/antd.less’,实现按需引入了

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐