npm run eject
命令有什么作用?我确实理解其他命令的作用,如启动,构建,测试。但不知道弹出。
答案 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
。策划的功能集适用于中小型部署,您不应觉得有义务使用此功能。但是我们知道如果你准备好它就无法自定义它,这个工具就没用了。
弹出的替代方法
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 eject
或 yarn eject
将失败。
答案 4 :(得分:0)
npm运行弹出 :- 此命令将从项目中删除单个构建依赖项。甚至将它(作为webpack,Babel,ESLint等)作为包中的依赖项添加到您的项目中也无济于事。
答案 5 :(得分:0)
react-scripts
基本上将所有配置和样板封装在一个依赖项中,因此您不必从头开始配置整个项目。但是,在某些情况下,您可能希望为构建自定义或更具体的内容覆盖这些配置。因此,它提供了 eject
功能,因此您可以控制这些配置。包括lint、bundle、code-splitting等