安装less
npm i less less-loader@5.0.0
注:新版的less-loader不兼容
暴露webpack配置
react的webpack配置是默认隐藏的,封装在react脚手架包里。
要想加入自己的配置,需要暴露出webpack文件。
npm run eject
注:对应
“eject”: “react-scripts eject”
会显示出默认的配置文件:
里面有个webpack.config.js文件,就是我们要写自己的配置的地方。
添加配置
添加正则
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
下面添加
const lessRegex = /\.less$/;
const lessModuleRegex = /\.module\.less$/;
修改loaders方法
const getStyleLoaders = (cssOptions, preProcessor) => {
改为
const getStyleLoaders = (cssOptions, lessOptions, preProcessor) => {
添加less-loader
{
loader: require.resolve('css-loader'),
options: cssOptions,
},
下面添加
{
loader: require.resolve('less-loader'),
options: lessOptions,
},
添加规则
{
test: sassModuleRegex,
use: getStyleLoaders(
{
importLoaders: 3,
sourceMap: isEnvProduction
? shouldUseSourceMap
: isEnvDevelopment,
modules: {
mode: 'local',
getLocalIdent: getCSSModuleLocalIdent,
},
},
'sass-loader'
),
},
后面添加
/** less */
{
test: lessRegex,
exclude: lessModuleRegex,
use: getStyleLoaders(
{
importLoaders: 3,
sourceMap: isEnvProduction
? shouldUseSourceMap
: isEnvDevelopment,
modules: {
mode: 'icss',
},
},
'less-loader'
),
sideEffects: true,
},
{
test: lessModuleRegex,
use: getStyleLoaders(
{
importLoaders: 3,
sourceMap: isEnvProduction
? shouldUseSourceMap
: isEnvDevelopment,
modules: {
mode: 'local',
getLocalIdent: getCSSModuleLocalIdent,
},
},
'less-loader'
),
},
重启npm run start即可
示例
index.less
@def: pink;
.color1 {
color: @def;
}
index.js
import './index.less';
//使用样式
<h3 className="color1">hello react!</h3>