React项目eject后使用less和antd遇到的问题

一. 使用less编写样式和less全局变量

-下载依赖包,导出配置文件

npm install --save less less-loader
npm install --save-dev style-resources-loader // less全局变量
npm run eject

找到config文件夹下webpack.config.js文件

// 在60行左右添加less正则匹配
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;
// 在550行左右,sass配置的下面添加less处理配置
// 改配置模仿sass配置
{
  test: lessRegex,
    exclude: cssModuleRegex,
      use: [
        ...getStyleLoaders(
          {
            importLoaders: 3,
            sourceMap: isEnvProduction
              ? shouldUseSourceMap
              : isEnvDevelopment,
          },
          'less-loader'
        ),
        {
          loader: 'style-resources-loader',
          options: {
          	// 全局变量文件路径
            patterns: path.resolve(__dirname, '../src/assets/css/baseVariable.less'),
          },
        },
      ],
        sideEffects: true,
},
{
  test: lessModuleRegex,
    use: [
      ...getStyleLoaders(
        {
          importLoaders: 3,
          sourceMap: isEnvProduction
            ? shouldUseSourceMap
            : isEnvDevelopment,
          modules: {
            getLocalIdent: getCSSModuleLocalIdent,
          },
        },
        'less-loader'
      ),
      {
        loader: 'style-resources-loader',
        options: {
          // 全局变量文件路径
          patterns: path.resolve(__dirname, '../src/assets/css/baseVariable.less'),
        },
      },
    ],
},

详细过程参考链接 React配置less以及less的全局变量设置

二. antd按需引入和主题自定义

官网提供了相关的方法,但是在eject后官网方法不在生效会引起错误

解决方法

检查项目是否引入babel-plugin-import包,没有则引入,然后修改package.json文件,实现了按需引入

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

定制主题需修改webpack.config.js文件

// 引入
const { getThemeVariables } = require('antd/dist/theme');
// 在150行左右
if (preProcessor) {
     loaders.push(
       {
         loader: require.resolve('resolve-url-loader'),
         options: {
           sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment,
           root: paths.appSrc,
         },
       },
       {
         loader: require.resolve(preProcessor),
         options: {
           sourceMap: true,
           // 定制主题--自己添加
           lessOptions: preProcessor === 'less-loader' ? {
             modifyVars: getThemeVariables({
               dark: true, // 开启暗黑模式
               compact: true, // 开启紧凑模式
             }),
             javascriptEnabled: true,
           } : null
           // 添加结束
         },
       }
     );

详细过程参考链接 https://blog.youkuaiyun.com/f980815/article/details/109385835

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值