欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

react eject后,antd定制主题(webpack)。

程序员文章站 2022-04-12 08:10:17
第一种用的使用官方推荐的craco,创建一个craco.config.js进行配置,都有说明。之后我把项目yarn eject之后,craco.config.js的配置就不生效了。antd推荐的craco start什么的也都失效了。然后开始上网搜索配置教程(之前不知道有官方说明。哎,大意了。。。)。记录下我自己配置的代码,yarn reject会暴露出scripts文件夹和config文件夹,在config/webpack.config.js首先配置下less。上面有css和sass的,直接照猫....

第一种用的使用官方推荐的craco,创建一个craco.config.js进行配置,都有说明。

之后我把项目yarn  eject之后,craco.config.js的配置就不生效了。antd推荐的craco start什么的也都失效了。然后开始上网搜索配置教程(之前不知道有官方说明。哎,大意了。。。)。

记录下我自己配置的代码,yarn reject会暴露出scripts文件夹和config文件夹,在config/webpack.config.js首先配置下less。上面有css和sass的,直接照猫画虎定义两个变量lessRegex和lessModuleRegex。贴下自己的代码:

最后两行是自己加的。

const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;
const lessRegex = /\.(css|less)$/;
const lessModuleRegex = /\.module\.(css|less)$/

  就模仿官方的把自己的配置加上去就可以。

            {
              test: lessRegex,
              exclude: lessModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 2,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                },
                'less-loader'
              ),
              sideEffects: true,
            },
            {
              test: lessModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 2,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                  modules: {
                    getLocalIdent: getCSSModuleLocalIdent,
                  },
                },
                'less-loader'
              ),
            },

这个就是定制主题的部分。

 if (preProcessor) {
      loaders.push(
        {
          loader: require.resolve('resolve-url-loader'),
          options: {
            sourceMap: isEnvProduction && shouldUseSourceMap,
          },
        },
        {
          loader: require.resolve(preProcessor),
          options: {
            sourceMap: true,
            lessOptions: preProcessor === 'less-loader' ? {
              modifyVars: {
                'primary-color': '#8ABB64', // 自己配置的主题
              },
              javascriptEnabled: true,
            } : null
          },
        }
      );
    }
    return loaders;
  };

 package.json加上

 "babel": {
    "presets": [
      "react-app"
    ],
    "plugins": [
      [
        "import",
        {
          "libraryName": "antd",
          "libraryDirectory": "es",
          "style": true
        }
      ]
    ]
  },

yarn add babel-plugin-import  按需引入。

运行成功打开浏览器,基本上就可以看到了。

本文地址:https://blog.csdn.net/f980815/article/details/109385835

相关标签: webpack react