Blog

日落时分,在阴云密布的天空背景下,拍摄到一个人从悬崖上跳下来的画面。React 如何撤回 Eject

今天手贱运行了 yarn run eject,试过之后后悔了,网上大多都在说「这是个不可逆的操作」,让你重建项目。但实际上,你不需要重建项目就能恢复。

Eject 做了什么

想要撤回 Eject,就要知道它做了什么?Eject 大概可以分成三个操作:

  1. 删除包 react-scripts
  2. 修改 package.json 里的 scripts
// 运行前
"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
}
// 运行后
"scripts": {
    "start": "node scripts/start.js",
    "build": "node scripts/build.js",
    "test": "node scripts/test.js --env=jsdom"
}
  1. 新增了 scriptsconfig 文件夹

总的来说,Eject 其实就是把原本放在包 react-scripts 里的逻辑代码配置都移到了项目根目录里,让我们能够自己配置。

如何撤回 Eject

其实答案已经出来了,只要和 Eject 对着干就行,具体分三步:

  1. 删除 scriptsconfignode_modules 文件夹
  2. 运行 yarn add react-scripts 将包 react-scripts 安装回来
  3. package.jsonscripts 变成:
"scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
}
  1. 运行 yarn install 安装所有依赖项

完成!

参考资料

  1. https://www.jianshu.com/p/1fc08aa4279a
  2. https://cloud.tencent.com/developer/article/1472477
  3. https://stackoverflow.com/questions/51454729/undo-npm-run-eject-in-react

About

Avatar

Mark Ivory

一个草稿本而已

Series