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

时间:2018-01-17 19:52:10

标签: reactjs webpack create-react-app react-scripts

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

6 个答案:

答案 0 :(得分:99)

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

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

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

答案 1 :(得分:32)

npm run eject

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

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

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

您不必使用eject。策划的功能集适用于中小型部署,您不应觉得有义务使用此功能。但是我们知道如果你准备好它就无法自定义它,这个工具就没用了。

link to documentation

弹出的替代方法

Ejecting允许您自定义任何内容,但从那时起,您必须自己维护配置和脚本。如果您有许多类似的项目,这可能会令人生畏。在这种情况下,我们建议您使用叉子react-scripts以及您需要的任何其他包,而不是弹出。 This article深入了解如何进行深入研究。您可以在this issue.

中找到更多讨论

答案 2 :(得分:1)

有些软件包可以允许自定义而不弹出,就像在react-scripts和您的自定义之间的中间件一样:

答案 3 :(得分:1)

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

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

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

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

答案 4 :(得分:0)

npm运行弹出 :- 此命令将从项目中删除单个构建依赖项。甚至将它(作为webpack,Babel,ESLint等)作为包中的依赖项添加到您的项目中也无济于事。

答案 5 :(得分:0)

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