这个“react脚本弹出”命令有什么作用?

IT技术 reactjs webpack create-react-app react-scripts
2021-04-13 08:35:52

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

5个回答

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

但是,如果您想开始做更复杂的事情并安装可能与 create-react-app 在后台使用的module交互的module,这些新module需要知道哪些可用,哪些不可用,这意味着您需要有 create-react -app 取消抽象它们。

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

@Sergii 答案更准确。Eject 不仅是关于 package.json 和 NPM module,它还包括其他东西(babel、webpack、eslint 等)github.com/facebook/create-react-app/blob/master/packages/...
2021-06-10 08:35:52
npm run eject

注意:这是一种单向操作。一旦你eject,你不能回去!

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

相反,它会将所有配置文件和可传递依赖项(Webpack、Babel、ESLint 等)复制到您的项目中,以便您可以完全控制它们。除了所有命令eject仍然有效,但它们将指向复制的脚本,以便您可以调整它们。在这一点上,你是靠自己的。

您不必永远使用eject. 精选功能集适用于中小型部署,您不应该觉得有义务使用此功能。但是我们知道,如果您在准备好时无法对其进行自定义,则此工具将没有用处。

文档链接


弹出的替代方法

弹出让您可以自定义任何内容,但从那时起您必须自己维护配置和脚本。如果您有许多类似的项目,这可能会令人生畏。在这种情况下,我们建议使用 forkreact-scripts和您需要的任何其他包,而不是弹出本文深入探讨了如何做到这一点。您可以在此问题中找到更多讨论

我对这两种方法都非常不满意。你有没有明显原因的古老依赖。这两种方法都隐藏了这些问题,并将开发工作从项目转移到死胡同。没有什么可以替代适当的依赖管理。
2021-05-30 08:35:52
我们可以再次使用添加返回 npm install react-scripts
2021-06-03 08:35:52
如果 create-react-app 是由 Git 版本控制的,我们可以通过结帐/重置更改返回吗?
2021-06-07 08:35:52
@Sergii,你可以回去了。我们生活在一个撤销的世界。只是不要Promise。:)
2021-06-16 08:35:52

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

弹出:是一个高级操作,它允许您在 Create-React-App(react-scripts) 下自定义配置

在执行eject之前,您需要了解后果:这是一种单向操作!

我鼓励您执行弹出的唯一原因是:了解构建过程(create-react-app)的工作原理。

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

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