create-react-app
生成的项目对 webpack
的配置进行了封装并默认隐藏,但大多数时候我们需要扩展项目的 webpack
配置。
此处以配置 less-loader
为例,演示如何扩展 create-react-app
的 webpack
配置,有以下两种方式:
一、使用react-app-rewired
安装
1 2
| yarn add react-app-rewired customize-cra yarn add less less-loader
|
修改package.json
配置
1 2 3 4 5
| "scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build", "test": "react-app-rewired test" }
|
添加扩展配置
在项目根目录创建文件config-override.js
:
1 2 3 4 5 6 7
| const { override, addLessLoader } = require('customize-cra')
module.exports = override( addLessLoader({ javascriptEnabled: true }) )
|
二、yarn eject
显示隐藏的配置文件并修改
根目录下运行命令
此时隐藏的配置文件都显示出来了,./config/webpack.config.js
就是 webpack 的配置文件
安装 less 相关包
1
| yarn add less less-loader
|
在配置文件中添加 less 规则
1 2 3 4 5 6
| const cssRegex = /\.css$/; const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; + const lessRegx = /\.less$/; + const lessModuleRegex = /\.module\.less$/;
|
添加 loader 配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| { test: lessRegex, exclude: lessModuleRegex, use: getStyleLoaders( { importLoaders: 2, sourceMap: isEnvProduction && shouldUseSourceMap, }, 'less-loader' ), sideEffects: true, }, { test: lessModuleRegex, exclude:[/node_modules/], use: getStyleLoaders( { importLoaders: 2, sourceMap: isEnvProduction && shouldUseSourceMap, modules: true, getLocalIdent: getCSSModuleLocalIdent, }, 'less-loader' ), }
|