为什么弹出 create-react-app 应用程序是一种单向操作?

Why is ejecting a create-react-app app a one way operation?

Note: this is a one-way operation. Once you eject, you can’t go back! … At this point you’re on your own.

领取 CRA 文件。但是,我不明白这是为什么。如果我使用的是 VCS,是什么阻止我回滚 运行 npm run eject 所做的更改?这意味着项目之外的某些东西会影响它,这违反了我脑海中关于现代网络开发原则的一些模糊概念..

如果您还原 VCS 中的更改,您可以还原 eject

eject 只会将配置文件复制到您的工作目录,以便您按照自己的方式编辑它们。

请记住,一旦弹出,node_modules 中的结构可能会发生变化,因为脚本会在不同的路径中查找。此外,node_modules 在版本管理系统中通常 未被跟踪 。因此,在还原 eject 之后,您可能必须使用 npm installyarn

安装依赖项

如果这不起作用,请尝试删除 node_modules 目录并再次 运行 npm installyarn

基本上,版本管理系统中跟踪的所有内容都可以还原。

在这种情况下,我认为一张图片就可以解释它。它似乎可以编译您的应用程序和 package.json。虽然我的 node_modules 文件夹似乎变大了,但如果我删除它并输入 yarn,它又会回来,但这次只有 29 MB,而不是之前的屏幕截图中看到的更大的 175 MB。

➜  aminosee copy git:(master) ✗ yarn
yarn install v1.13.0
[1/4]   Resolving packages...
[2/4]   Fetching packages...
[3/4]   Linking dependencies...
warning " > @typescript-eslint/eslint-plugin@1.6.0" has unmet peer dependency "typescript@*".
warning " > @typescript-eslint/parser@1.6.0" has unmet peer dependency "typescript@*".
warning "@typescript-eslint/eslint-plugin > @typescript-eslint/typescript-estree@1.6.0" has unmet peer dependency "typescript@*".
warning "@typescript-eslint/eslint-plugin > tsutils@3.10.0" has unmet peer dependency "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev".
[4/4]   Building fresh packages...
✨  Done in 68.43s.