react項目配置使用less文件


參考:https://www.jianshu.com/p/bfa308164df4

出現問題解決參考:https://blog.csdn.net/weixin_42614080/article/details/106951617

前提:create-react-app創建一個react項目

想要在項目中使用less樣式文件

步驟

1,進入項目路徑下,安裝less和less-loader

yarn add less less-loader

或者

npm install less less-loader

2,配置less-loader

配置less-loader需要暴露webpack配置文件,這就要使用create-react-app腳手架工具提供的 eject 命令,運行命令前需要將項目commit一下,否則項目無法eject成功,打開終端運行 yarn eject命令(或者npm run eject),eject命令是一次性命令,運行后無法恢復【這是參考的文章的說法】

PS:(1)剛創建的項目直接使用 yarn eject命令(或者npm run eject)暴露出webpack配置文件

 

 

 (2)創建后已經修改過的項目,可以去node_modules\react-scripts\config目錄下修改webpack.config.js文件

3,打開webpack.config.js文件,主要修改三個地方

(1)

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

 

 

 

 (2)

{
              test: lessRegex,
              exclude: lessModuleRegex,
              use: getStyleLoaders({
                importLoaders: 1,
                sourceMap: isEnvProduction
                  ? shouldUseSourceMap
                  : isEnvDevelopment,
              },
              'less-loader'
              ),
              // Don't consider CSS imports dead code even if the
              // containing package claims to have no side effects.
              // Remove this when webpack adds a warning or an error for this.
              // See https://github.com/webpack/webpack/issues/6571
              sideEffects: true,
            },
            // Adds support for CSS Modules (https://github.com/css-modules/css-modules)
            // using the extension .module.css
            {
              test: lessModuleRegex,
              use: getStyleLoaders({
                importLoaders: 1,
                sourceMap: isEnvProduction
                  ? shouldUseSourceMap
                  : isEnvDevelopment,
                modules: {
                  getLocalIdent: getCSSModuleLocalIdent,
                },
              },
              'less-loader'
              ),
            }

 

 

 

 (3)

{
     loader: require.resolve('less-loader'),
     options: lessOptions,
}

 

 

 

 webpack.config.js文件修改完成。

4,試一下效果,將index.css文件重命名為index.less,再把index.js文件中引入的index.css文件修改為index.less文件,保存代碼,命令行輸入yarn start 命令(或npm start)

頁面樣式起作用了就代表成功了
出現的問題:
alidationError: Invalid options object. Less Loader has been initialized using an options object that does not match the API schema
錯誤日志
Module build failed (from ./node_modules/less-loader/dist/cjs.js):
ValidationError: Invalid options object. Less Loader has been initialised using
an options object that does not match the API schema.
 - options has an unknown property 'data'. These properties are valid:
   object { implementation?, sassOptions?, prependData?, sourceMap?, webpackImpo
rter? }
    at validate 
    at Object.loader

問題的分析及解決:

  1. 問題的分析: 這個實際上是 Less Loader 的版本導致的兼容性問題,需要更換 Less Loader 的版本。
  2. 問題的解決:把 Less Loader 進行降級,通過 npm remove less-loader命令卸載 Less Loader ,通過 npm i less-loader@5.0.0 命令安裝 less-loader@5.0.0 的版本,然后問題就可以解決了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM