React16.8更改Webpack支持Less文件

创建项目

当前最新React版本是16.8.6
使用create-react-app脚手架工具创建一个项目
由于要在项目中使用AntD

暴露配置文件

配置less-loader需要暴露webpack配置文件,这就要使用create-react-app脚手架工具提供的 eject 命令,运行命令前需要将项目commit一下,否则项目无法eject成功,打开终端运行 yarn eject命令(或者npm run eject),eject命令是一次性命令,运行后无法恢复,

yarn eject

能看到文件中多出了config文件夹

React16.8更改Webpack支持Less文件

配置less

接下来安装less和less-loader插件包,打开终端输入:

cd your-project
yarn add less less-loader

打开config文件夹,找到webpack.config.js文件打开,主要修改里面的三处地方:

1.修改style files regexes(样式文件正则),找到 注释style files regexes,在这部分最后添加如下两行代码:

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

React16.8更改Webpack支持Less文件

2.修改 getStyleLoaders 函数,添加代码

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

React16.8更改Webpack支持Less文件

3.添加如下代码,如下图

{
              test: lessRegex,
              exclude: lessModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 2,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                },
                '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, but using less
            // using the extension .module.scss or .module.less
            {
              test: lessModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 2,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                  modules: true,
                  getLocalIdent: getCSSModuleLocalIdent,
                },
                'less-loader'
              ),
            },

React16.8更改Webpack支持Less文件

至此修改完成,重新打包

相关推荐