命令有什么作用npm run eject
?我确实了解其他命令的作用,例如启动、构建、测试。但不知道弹出。
5 回答
create-react-app 封装了它在内部使用的所有 npm 模块,因此您的 package.json 将非常干净和简单,您不必担心它。
但是,如果您想开始做更复杂的事情并安装可能与模块交互的模块 create-react-app 在后台使用,这些新模块需要知道什么是可用的,什么是不可用的,这意味着您需要有 create-react -app 取消抽象它们。
从本质上讲,就是这样react-scripts eject
做的。它将停止隐藏它在引擎盖下安装的内容,而是将这些内容弹出到项目的 package.json 中供所有人查看。
npm run eject
注意:这是一种单向操作。一旦你eject
,你不能回去!
如果您对构建工具和配置选择不满意,您可以eject
随时进行。此命令将从您的项目中删除单个构建依赖项。
相反,它会将所有配置文件和传递依赖项(Webpack、Babel、ESLint 等)直接复制到您的项目中,以便您完全控制它们。除此以外的所有命令eject
仍然有效,但它们将指向复制的脚本,以便您可以调整它们。在这一点上,你是你自己的。
您不必使用eject
. 精选功能集适用于中小型部署,您不必觉得有义务使用此功能。但是,我们知道,如果您在准备好时无法对其进行自定义,则此工具将毫无用处。
弹出的替代方案
弹出允许您自定义任何内容,但从那时起,您必须自己维护配置和脚本。如果您有许多类似的项目,这可能会令人生畏。在这种情况下,我们建议不要弹出,而是 forkreact-scripts
和您需要的任何其他包。本文深入探讨了如何做到这一点。您可以在此问题中找到更多讨论。
有一些包可以在不弹出的情况下进行自定义,就像 react-scripts 和您的自定义之间的中间件:
弹出:是一个高级操作,它允许您在 Create-React-App(react-scripts) 下自定义配置
在弹出之前您需要了解后果:这是一种单向操作!
我鼓励您进行弹出的唯一原因是:了解构建过程(create-react-app)是如何工作的。
在弹出之前您需要做的另一件事是将您的项目提交到 git。如果您当前的项目尚未添加到 git。npm run eject
或者yarn eject
会失败。
react-scripts
基本上将所有配置和样板封装在一个依赖项中,因此您不必从头开始配置完整的项目。但是,可能存在您想要覆盖这些配置以进行构建自定义或更具体的情况的情况。因此,它提供了eject
功能,因此您可以控制这些配置。包括 lint、bundling、code-splitting 等。