这个项目能做什么
react-app-rewired 是一个开发者工具,允许你在不使用 'eject' 命令的情况下覆盖和自定义 Create React App (CRA) 项目的 webpack 配置。它保留了 CRA 零配置设置的优势,同时为开发者提供添加插件、加载器和其他所需自定义的灵活性。
该工具通过拦截标准的 react-scripts 命令(start、build、test)并应用来自 config-overrides.js 文件的用户定义覆盖来工作。此文件可以导出一个用于 webpack 自定义的单一函数,或一个包含用于 webpack、Jest、devServer 和 paths 配置的独立函数的对象。
关键功能包括:为开发和生产构建自定义 webpack 规则和插件;修改 Jest 测试配置,包括测试路径模式和 Babel 预设;覆盖 Webpack Dev Server 配置以设置 HTTPS 证书和代理设置;以及调整传递给 webpack 和 Jest 的项目路径。
该项目支持 CRA 1.x(Webpack 3)和 CRA 2.x(Webpack 4)版本,其中 2.0 版本移除了 rewire 辅助函数,转而支持直接配置。它还通过 --scripts-version 标志支持自定义 react-scripts 包,从而能够与 TypeScript 变体(如 react-scripts-ts)一起使用。
存在一个大型的 rewire 插件社区生态系统,涵盖常见用例,包括 Babel 插件(emotion、lodash、styled-components)、webpack 插件(favicons、imagemin、bundle analyzer)和加载器(TypeScript、SCSS、SVG、YAML)。config-overrides 文件也可以指定为目录以实现模块化组织,或通过命令行传递以增加灵活性。
重要注意事项:使用 react-app-rewired 会破坏 CRA 的官方保证,这意味着你拥有配置且不获得官方支持。作者建议对于需要开箱即用的大量自定义 webpack 配置的项目,使用 Next.js 或 Razzle。对于 CRA 2.0+ 兼容性,还可使用 customize-cra、Rescripts 和 craco 等替代方案。
评论
0 评分人数达到10人后显示
登录后参与讨论。