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

Ish*_*tel 74 reactjs webpack react-scripts create-react-app

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

cas*_*ber 124

create-react-app封装了它在内部使用的所有npm模块,这样你的package.json就会非常干净简单,而不必担心它.

但是,如果你想开始做更复杂的事情并安装可能与模块交互的模块,create-react-app正在底层使用,那些新模块需要知道什么是可用的而不是,这意味着你需要创建 - 反应-app取消抽象.

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

  • @Sergii 答案更准确。Eject 不仅是关于 package.json 和 NPM 模块,它还包括其他东西(babel、webpack、eslint 等) https://github.com/facebook/create-react-app/blob/master/packages/react-脚本/模板/README.md (7认同)

Ser*_*gii 46

npm run eject
Run Code Online (Sandbox Code Playgroud)

注意:这是单向操作.有一次eject,你不能回去!

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

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

你不必使用eject.精选功能集适用于中小型部署,您不应觉得有义务使用此功能.但是,我们知道如果您准备好它时无法自定义此工具将无用.

链接到文档


弹射的替代方案

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

  • 如果 create-react-app 由 Git 进行版本控制,我们可以通过签出/重置更改来返回吗? (4认同)
  • 我对这两种方法都非常不满意。你有古老的依赖关系,没有明显的原因。这两种方法都隐藏了这些问题,并将开发工作的重点从项目转移到了死胡同代码上。正确的依赖管理是无可替代的。 (3认同)
  • 我们可以使用再次添加“npm install react-scripts”返回 (2认同)
  • @Sergii,你可以回去了。我们生活在一个撤销的世界里。只是不要承诺。:) (2认同)
  • @Jordan,如果你提交并不重要,git 的重点是你可以随时回到过去......等等 (2认同)

小智 8

ject:是一项高级操作,它允许您自定义 Create-React-App(react-scripts) 下的配置

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

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

在弹出之前还需要做的一件事是将项目提交到 git。如果你当前的项目还没有添加到git中。npm run ejectyarn eject将失败。


Iso*_*riq 6

有些软件包允许在不弹出的情况下进行自定义,就像反应脚本和自定义之间的中间件一样:


Kir*_*iya 6

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