create-react-app配置antd主题色

配置antd主题色过程中踩了不少坑。记录以下遇到的一些问题:

本实例解决方案是通过craco+craco.config.js+craco.less来实现的。

基本步骤:

(1)安装@craco/craco和craco-less

 (2)修改package.json的script配置为

 "scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test"
  },

(3)在src目录下的index.js文件中引入 

     import “antd/dist/antd.less”

(4)在根目录下新建一个craco.config.js文件

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

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

 以下是几个踩坑的点:

1 修改package.json的script配置和新建craco.config.js以后,重新启动会报错:

Erroe:Cannot find module 'react-scripts/package.json'

解决方法:npm i react-scripts

2 在index.js中引入“antd/dist/antd.less"会报错 Cannot find module"~antd/dist/antd.less".但是如你改成“antd/dist/antd.css”则正常显示的问题

解决方法:重新启动。清理缓存再启动下就可以了

方法二:更改create-react-app配置实现:

特别注意less/less-loader版本问题,这里坑很多:经过多方测试,

    "less": "4.1.1",

    "less-loader": "^5.0.0",可以正常运行。

在script文件夹的webpack.config.js中对postcss-loader做如下更改:

{
        loader: require.resolve('postcss-loader'),
        options: {
          ident: 'postcss',
          plugins: () => [
            require('postcss-flexbugs-fixes'),
            require('postcss-preset-env')({
              autoprefixer: {
                flexbox: 'no-2009',
              },
              stage: 3,
            }),
            postcssNormalize(),
          ],
          sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment,
        },
      },
    ].filter(Boolean);
    if (preProcessor) {
      if (preProcessor === "less-loader") {
        loaders.push({
          loader:require.resolve(preProcessor),
          options:{
            sourceMap: isEnvProduction&&shouldUseSourceMap,
            modifyVars:{
              'primary-color': '#ff8c00',
              "ant-btn-primary":"#ff8c00"
            },
            javascriptEnabled:true
          }
        })
      }else{
        loaders.push(
          {
            loader:require.resolve("resolve-url-loader"),
            options:{
              sourceMap: isEnvProduction && shouldUseSourceMap,
            }
          },
          {
            loader:require.resolve(preProcessor),
            options:{
              sourceMap:true
            }
          },
        )
      }
      
    }
    return loaders;
  };

在if (preProcessor) 中添加对less-loader的判断,单独处理,添加modifyVars即可实现主题色更改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值