create-react-app,实现暴露配置,antd按需加载,less引入,主题定制

第一步暴露配置:

$ yarn eject

第二步实现antd按需加载:

$ yarn add babel-plugin-import

修改package.json

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

第三步less引入:

$ yarn add less less-loader

修改config目录下webpack.config.js文件
其实就是复制sass的配置修改成less
复制并添加**+**后面的内容

// style files regexes
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;
 + const lessRegex = /\.less$/;
 + const lessModuleRegex = /\.module\.less$/;
            // Adds support for CSS Modules, but using SASS
            // using the extension .module.scss or .module.sass
            {
              test: sassModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 2,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                  modules: {
                    getLocalIdent: getCSSModuleLocalIdent,
                  },
                },
                'sass-loader'
              ),
            },
           + {
           +  test: lessRegex,
           +  exclude: lessModuleRegex,
           +  use: getStyleLoaders({ importLoaders: 2 }, 'less-loader'),
           + },
           + // Adds support for CSS Modules, but using SASS
           + // using the extension .module.scss or .module.sass
           + {
           +  test: lessModuleRegex,
           +  use: getStyleLoaders(
           + {
           +         importLoaders: 2,
           +        modules: true,
           +        getLocalIdent: getCSSModuleLocalIdent,
           + },
           +     'less-loader'
           + ),
           + },

第四步主题定制:
同样是config目录下webpack.config.js文件

//if (preProcessor) {
//   ...
// }
+if (preProcessor) {
+     let loader = require.resolve(preProcessor)
+      if (preProcessor === "less-loader") {
+        loader = {
+          loader,
+          options: {
+            modifyVars: { //自定义主题
+              'primary-color':' #1890ff ',
+            },
+            javascriptEnabled: true,
+          }
+        }
+      }
+      loaders.push(loader);
+   }
    return loaders;

修改第二步package.json下
注意:配置文件有注释可能会报错所有大家复制的时候记得把注释去掉

"babel": {
    "presets": [
      "react-app"
    ],
    "plugins": [
      [
        "import",
        {
          "libraryName": "antd",
          "style": true //修改位置 
        }
      ]
    ]
  }

问题:在使用yarn eject暴露webpack配置后,再次使用yarn start 不能启动项目,显示缺少某包
解决:删除node-modules,使用npm或cnpm重新npm install

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值