使用react-app-rewired
修改配置
使用CRA创建的应用依旧是受到限制的,如果要对CRA创建的应用进行额外的配置,一般推荐使用react-app-wired
。这个功能库可以使用以下命令完成安装。
npm install react-app-rewird --save-dev
yarn add react-app-wired --dev
安装好功能库之后,需要修改package.json
中的启动项,将之前的react-scripts
改为react-app-rewired
。
{
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test --env=jsdom"
}
}
完成这些准备工作之后,需要在项目根目录创建一个文件config-overrides.js
,其中需要导出一个函数用来修改默认配置。这个文件的基本结构如下。
module.exports = function override(config, env) {
return config;
};
或者导出一个最多包含三个字段的对象,其中每个字段都是一个函数,这种导出方法允许自定义Jest和Webpack Dev Server的配置,此时这个文件的基本结构如下。
module.exports = {
// 用于配置React应用的编译,本处的配置不在测试中起效
webpack: function (config, env) {
return config;
},
// 用于配置Jest的运行,本处的配置不在项目编译时起效
jest: function (config) {
return config;
},
// 当使用npm run start或者yarn start时启动的Dev Server的配置
devServer: function (configFunction) {
return function (proxy, allowHost) {
const config = configFunction(proxy, allowHost);
return config;
};
},
// 为编译React应用或测试应用时提供路径覆盖
paths: function (paths, env) {
return paths;
}
};