此“反应脚本弹出”命令有什么作用?


Answers:


156

create-react-app封装了它在内部使用的所有npm模块,因此您的package.json将非常干净和简单,而您不必担心它。

但是,如果您要开始做更复杂的事情并安装可能与在后台使用的create-react-app模块交互的模块,则这些新模块需要知道可用的内容,而不是可用的,这意味着您需要进行create-react -app取消摘要。

从本质上讲,这就是react-scripts eject作用。它将停止隐藏引擎盖下已安装的内容,而是将这些内容弹出到项目的package.json中,以供所有人查看。


2
@Sergii答案更准确。弹出不仅是的package.json和NPM模块,它包括其它的东西(巴别,的WebPack,eslint等)github.com/facebook/create-react-app/blob/master/packages/...
布鲁诺蒙泰罗

67
npm run eject

注意:这是单向操作。一旦您eject,您将无法返回!

如果您对构建工具和配置选择不满意,则可以eject随时进行。此命令将从项目中删除单个构建依赖项。

而是将所有配置文件和传递依赖项(Webpack,Babel,ESLint等)直接复制到您的项目中,以便您完全控制它们。除了这些命令以外的所有命令eject仍然可以使用,但是它们将指向复制的脚本,因此您可以对其进行调整。在这一点上,您是一个人。

您无需使用eject。精选的功能集适用于中小型部署,您不应该使用此功能。但是,我们了解到,如果在准备就绪时无法自定义该工具,它将不会有用。

链接到文档


顶出的替代方法

弹出允许您自定义任何内容,但从那以后,您必须自己维护配置和脚本。如果您有许多类似的项目,这可能会令人生畏。在这种情况下,我们建议您分叉react-scripts和需要其他任何包裹,而不是将其弹出。本文深入探讨了如何进行。您可以在本期中找到更多讨论


我们可以再次使用添加功能npm install react-scripts
Ashish Kamble

我对这两种方法都不满意。您有古老的依存关系,没有明显的原因。两种方法都隐藏了这些问题,并将开发工作从项目转移到了死胡同的代码。不能替代适当的依赖项管理。
阿帕德Magosányi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.