create-react-app腳手架建立react項目,暴露webpack配置文件,如何引入less支持+antd按需加載+自定義主題

使用 create-react-app 腳手架建立項目後,默認是不支持 less 的。因此咱們須要手動添加。

第一步 暴露webpack配置文件

使用 create-react-app 建立的項目,默認狀況下是看不到 webpack 相關的配置文件,咱們須要給它暴露出來,使用下面命令便可javascript

yarn eject

運行以後,咱們發現多了一個config文件夾,這樣就能夠修改 webpack 相關配置了。css

第二步 添加less 在項目根目錄 使用 npm 或者 yarn 來安裝antd less 和 less-loader

  1. yarn add babel-plugin-import
  2. yarn add antd
  3. yarn add less less-loader

 

第三步 修改package.json:添加antd庫的樣式

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

第四步 複製代碼修改配置環境(webpack.config.js) 定義全局變量

// style files regexes
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;

const lessRegex = /\.less$/; const lessModuleRegex = /\.module\.less$/;

const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;


第五步 複製代碼配置less-loader

//在大概466行會看到以下代碼
      {
                test: sassModuleRegex,
                use: getStyleLoaders(
                  {
                    importLoaders: 2,
                    sourceMap: isEnvProduction && shouldUseSourceMap,
                    modules: true,
                   getLocalIdent: getCSSModuleLocalIdent,
                 },
                'sass-loader'
               ),
            },
 
 
 //在此代碼後添加以下代碼
 
 {
               test: lessRegex,
               exclude: lessModuleRegex,
               use: getStyleLoaders(
                 {
                   importLoaders: 2
                 },
                 'less-loader'
               ),
            },

             {
               test: lessModuleRegex,
               use: getStyleLoaders(
                 {
                   importLoaders: 2,
                   modules: true,
                   getLocalIdent: getCSSModuleLocalIdent,
                 },
                 'less-loader'
               ),
            },

 

第六步 複製代碼定義全局樣式

//註釋掉大概114行

// if (preProcessor) {
    //   loaders.push({
    //     loader: require.resolve(preProcessor),
    //     options: {
    //       sourceMap: isEnvProduction && shouldUseSourceMap,
    //     },
    //   });
    // }
    // return loaders;

//替換爲以下
    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  //修改處
        }
      ]
    ]
  }

大概執行完以上代碼以後,及支持less,同時也支持antd按需加載。

其實我的以爲不必暴露webpack,固然我我的不瞭解webpack,我不是專業作前端的,由於公司用到這個,因此學習一下,

我以爲antd裏使用文件的方式支持按需加載,更加簡單方便。直接按照高級配置一步一步作就行了。也很方便。webpack太麻煩了,

哈哈,回頭也要補充一下webpack方面的知識。

相關文章
相關標籤/搜索