使用react-app-rewired构建生产环境的依赖问题咨询
React-App-Rewired生产构建依赖问题解答
问题场景
我已按照文档将react-app-rewired作为开发依赖(devDependencies)安装,配置如下:
"devDependencies": { //... "react-app-rewired": "^2.1.8", },
现在我想要进行生产构建,当执行NODE_ENV=production yarn install后,后续运行yarn build时提示react-app-rewired: not found(因它仅在开发依赖中)。我有以下疑问:
yarn build是否默认在生产环境下执行?- 若确实如此,为何生产构建需要安装所有开发依赖?
- 我应该移除NODE_ENV配置还是将react-app-rewired移至生产依赖?
问题解答
1. yarn build是否默认在生产环境下执行?
是的,在Create React App体系中,yarn build默认会以生产环境模式执行,它会自动设置NODE_ENV=production,触发代码压缩、tree-shaking等生产专属的优化逻辑。
2. 若确实如此,为何生产构建需要安装所有开发依赖?
因为react-app-rewired是用来重写Create React App内置构建配置的工具,它属于构建流程的核心组成部分——不管是开发环境的yarn start还是生产环境的yarn build,都需要它加载自定义配置并修改webpack等构建工具的参数。
生产构建的最终产物是给终端用户使用的,但生成这个产物的工具链属于开发依赖范畴,生产构建过程必须依赖这些工具才能完成打包工作,所以需要安装所有开发依赖。
3. 我应该移除NODE_ENV配置还是将react-app-rewired移至生产依赖?
推荐移除NODE_ENV=production前缀,直接执行yarn install(或简写yarn)。
原因如下:
- 当你用
NODE_ENV=production yarn install时,Yarn会跳过安装devDependencies中的包,但生产构建必须用到react-app-rewired,因此会出现找不到包的错误。 - 将
react-app-rewired移到dependencies不符合规范,它是构建工具,不需要随生产产物部署到服务器,放在devDependencies才是正确的归类。
正确的生产构建流程:
- 执行
yarn install(不指定NODE_ENV),安装所有依赖(包括devDependencies) - 运行
yarn build,它会自动以生产环境模式执行,此时react-app-rewired已存在,可正常完成构建
内容的提问来源于stack exchange,提问作者Nick Roz
相关产品推荐
相关产品推荐

