升级打怪
最近做需求,想在项目中添加一个mock数据的功能,没想到会让我有诸多感思。
先说一下,项目背景:
- 纯前端项目,使用React18.2
- 项目是在2025年5月份左右创建,距离现在大约快1年时间
有意思的部分是,项目中使用了 react-app-rewired 这个工具。
这个工具是做什么的呢?
可以在不 eject 的情况下,调整 create-react-app 的 webpack 配置
当然远不如此,基本可以做到完整接入 webpack 的功能。
因此,这个项目很受 React 开发者喜欢,获得了 9.9K Star。
随着前端技术持续发展,CRA(create-react-app)经历了多次迭代,最后在2022年4月份之后停止了更新。
在CRA迭代的时间里,react-app-rewired 也一直在更新,直到同年2022年2月份之后也停止了更新。期间,做了大量对CRA的适配工作,老版本支持 webpack3.x,新版本支持webpack4.x。
但是,适配的工作永远没有尽头。
然后出现了,customize-cra 这个项目。
This project provides a set of utilities to customize create-react-app versions 2 and 3 configurations leveraging react-app-rewired core functionalities.
字面意思说,可以支持 create-react-app 版本 2 和 3 的配置。
实际上,customize-cra 在2020年5月份就走到了尽头,CRA的后续版本(4.x / 5.x)都无法支持。
在 react-app-rewired 项目获得关注后,React 社区又出现了新玩具🪀:
- Rescripts, an alternative framework for extending CRA configurations (supports 2.0+).
- react-scripts-rewired for a fork of this project that aims to support CRA 2.0
- craco
毫无例外,上面项目现在都已经停止了更新和维护。
这些项目停止更新前,最少也是 1k star。
但,CRA 更是夸张的收获了 104k star。
这件事情,告诉了我一个事实:
如果使用的第三方工具,它的依赖不够透明且过度封装,将导致失去灵活性扩展性。同样它也绝对不可靠不稳定,和不可持续。
Ref
- React / Create React App — But I don’t wanna Eject. | by tim arney
- facebook/create-react-app: Set up a modern web app by running one command.
- Create React App无eject配置(react-app-rewired 和 customize-cra)
- timarney/react-app-rewired: Override create-react-app webpack configs without ejecting
- arackaf/customize-cra: Override webpack configurations for create-react-app 2.0