Create React App 支持 Less Modules 的配置说明
Create-React-App 版本:v4.0.1
1. 未执行yarn eject的情形下
@craco/craco(Create React App Configuration Override - 配置扩展库)版本:v5.8.0
craco.config.js配置文件代码内容如下:
const CracoLess = require('craco-less');
const CracoAntDesign = require('craco-antd');
const path = require('path');
module.exports = {
plugins: [
// 针对Less的相关配置(如module样式)
{
plugin: CracoLess,
options: {
lessLoaderOptions: {
lessOptions: { javascriptEnabled: true },
},
modifyLessRule: function() {
return {
test: /\.module\.less$/,
exclude: /node_modules/,
use: [
{ loader: 'style-loader' },
{
loader: 'css-loader',
options: {
modules: {
localIdentName: '[local]_[hash:base64:6]',
},
},
},
{ loader: 'less-loader' },
],
};
},
},
},
// `Ant Design`相关配置
{
plugin: CracoAntDesign,
options: {
customizeThemeLessPath: path.join(
__dirname,
'src/antd.customize.less',
),
},
},
],
};
2. CRA原始工程已被eject的情形下
CRA v4.0.1版本eject后直接运行可能会报错,提示“找不到@babel/plugin-syntax-jsx” !
这里我们手动安装一下: yarn add -D @babel/plugin-syntax-jsx
因为工程中,我们还需要用到less和less-loader,所以先安装下:
yarn add -D less less-loader
webpack.config.js文件中(v4.0.1版本的第535行之后,sass相关配置之后)增添如下代码:
{ test: lessRegex, exclude: lessModuleRegex, use: getStyleLoaders( { importLoaders: 3, sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment, }, 'less-loader' ), sideEffects: true, }, { test: lessModuleRegex, use: getStyleLoaders( { importLoaders: 3, sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment, modules: { getLocalIdent: getCSSModuleLocalIdent, }, }, 'less-loader' ), }, // lessRegex 在上部自行定义: const lessRegex = /\.less$/; // lessModuleRegex 在上部自行定义: const lessModuleRegex = /\.module\.less$/;
浙公网安备 33010602011771号