为什么我弹出的CRA项目中需要这些特定的软件包

时间:2019-04-30 10:38:55

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

启动CRA 3.0应用程序,然后弹出。
正在检查我的package.json
发现多个包的用法对我来说还不是很清楚。

"semver": "6.0.0"
我为什么需要这个?在config/*scripts/*中找不到用法。似乎是react-scripts类似验证包相关逻辑逻辑的产物,因此在我的应用程序依赖项中看起来像是of肿。

"react-app-polyfill": "^1.0.0"
用于IE等的Polyfills?好的,但是为什么要单独包装呢?在core-jsbabel-polyfill上使用一些未知的软件包对我来说是很可怕的。同样,在初始代码库中找不到用法。

P.S。我不是在问这些软件包是什么,我是在问为什么我看到它们在弹出的脚本中未被使用

更新:Jest设置文件中使用了react-app-polyfill/jsdom

1 个答案:

答案 0 :(得分:2)

create-react-app使用名为react-scripts的程序包,该程序包隐藏了其下面使用的所有不同程序包。

当您eject使用应用程序时,react-scripts使用的依赖项是copied over到您自己的package.json。但是对于某些脚本(例如弹出),使用像@remove-on-eject-begin这样的babel注释删除了各个部分。即使您退出后,这些部分中使用的依赖关系仍然存在。

这是查找诸如semver之类的未在应用程序代码中任何地方使用的包的方式。在未弹出 create react应用程序中,该软件包将用于在弹出之前验证semantic versions

现在可以安全删除这些文件。但是无论如何您都不会将它们纳入静态捆绑中。