这个 "react-scripts eject" 命令有什么作用?

What does this "react-scripts eject" command do?

npm run eject 命令有什么作用?我确实了解其他命令的作用,例如启动、构建、测试。但是不知道弹出。

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。精选的功能集适用于中小型部署,您不应该觉得必须使用此功能。但是我们知道,如果您在准备好使用它时不能对其进行自定义,那么该工具将不会有用。

link to documentation


弹出的替代方法

Ejecting lets you customize anything, but from that point on you have to maintain the configuration and scripts yourself. This can be daunting if you have many similar projects. In such cases instead of ejecting we recommend to fork react-scripts and any other packages you need. This article dives into how to do it in depth. You can find more discussion in this issue.

有些软件包允许在不弹出的情况下进行自定义,就像 react-scripts 和您的自定义之间的中间件一样:

eject: 是一个高级操作,它允许您自定义 Create-React-App(react-scripts)

下的配置

在弹出之前你需要了解后果:这是一个单向操作!

我鼓励你弹出的唯一原因是:学习构建过程(create-react-app)是如何工作的。

在弹出之前您需要做的另一件事是将您的项目提交到 git。如果您当前的项目尚未添加到 git。 npm run ejectyarn eject 将失败。

react-scripts 基本上将所有配置和样板封装在一个依赖项中,因此您不必从头开始配置整个项目。但是,在某些情况下,您可能想要覆盖这些配置以进行构建自定义或更具体的操作。因此,它提供了 eject 功能,因此您可以控制这些配置。包括 lint、捆绑、代码拆分等