配置步骤:
- 引入react-app-rewired插件
react-app-rewired的作用就是在不eject的情况下,覆盖create-react-app的配置 - 安装customize-cra
npm install react-app-rewired customize-cra --save-dev
- 安装
style-resources-loader
npm install style-resources-loader
- 修改 package.json 里的启动配置
-
npm install less less-loader --dev
- 引入react-app-rewired插件
/* package.json */ "scripts": { - "start": "react-scripts start", + "start": "react-app-rewired start", - "build": "react-scripts build", + "build": "react-app-rewired build", - "test": "react-scripts test --env=jsdom", + "test": "react-app-rewired test --env=jsdom", }
- 根目录创建config-overrides.js 并配置修改
const { override, addWebpackAlias, addLessLoader } = require('customize-cra') const path = require('path') // module.exports = function override(config, env) { // // do stuff with the webpack config... // return config; // }; module.exports = override( addLessLoader({ lessOptions: { javascriptEnabled: true, localIdentName: '[local]--[hash:base64:5]' } }), //配置路径别名 addWebpackAlias({ ['assets']: path.resolve(__dirname, './src/assets'), ['images']: path.resolve(__dirname, './src/assets/images'), ['libs']: path.resolve(__dirname, './src/libs'), ['components']: path.resolve(__dirname, './src/components'), }), (config) => { //修改、添加loader 配置 : // 所有的loaders规则是在config.module.rules(数组)的第二项 // 即:config.module.rules[2].oneof (如果不是,具体可以打印 一下是第几项目) // 修改 less 配置 ,规则 loader 在第8项( ***此处根据实际项目打印填写,不一定是第7项*** ) const loaders = config.module.rules.find(rule => Array.isArray(rule.oneOf)).oneOf; // console.log(loaders[8]) loaders[8].use.push({ loader: 'style-resources-loader', options: { patterns: path.resolve(__dirname, './src/assets/css/variable.less')//全局引入公共的scss 文件 } }) return config } )
- variable.less,需要添加全局样式变量,直接在这个文件添加
-
@primary-color: #004080; @bg-gray-color: #F4F4F4;
若出现less问题,请注意less版本问题
我使用的是
"less": "^3.0.4", "less-loader": "^5.0.0",