我对ReactNative很新,很抱歉,如果它很明显,但是......
通过CLI初始化的每个RN项目都有大量节点模块存储在project_root / node_modules中。不是我会介意,但如果你有几个项目,它似乎是多余的,并占用时间/空间将其移动到源版本控制系统。
是不是可以从机器上的一般node_modules中检索所有这些相同的模块呢?
答案 0 :(得分:4)
您永远不希望在源控件中存储嵌套在node_modules
中的依赖项...它通常会破坏版本控制和依赖项的整个目的。您的package.json
文件将指定版本,因此当您运行npm install
时,它确切地知道要抓取哪些依赖项。
作为替代方案,Yarn是Facebook开发的一个正在兴起的软件包客户端,它可以更好地在本地缓存您的软件包,以便多个项目重用相同的依赖项,它仍然满足将它们保存在node_modules
中的需要,但不需要为每个请求执行http请求。
Yarn不会将NPM替换为软件包注册表,只是一个更好的客户端来下载,维护和缓存这些软件包。
Yarn还添加了一个yarn.lock
文件(类似于Ruby的Gemfile.lock),允许您锁定应用程序中使用的特定版本package.json
。 This file can be stored in version control,这可能是您希望通过在版本控制中保存node_modules
来实现的。
一些好的读物......
答案 1 :(得分:0)
我会回应Brad的回答:不要将node_modules
放在版本控制中。 npm install
将从package.json
安装正确的版本。只需将package.json
放在版本控制中,而不是node_modules
。
但是,如果您仍想节省磁盘空间,可以使用node_modules
选项在常规link
文件夹中安装一些依赖项:
npm config set link true -g
您可以在此处详细了解link
:https://docs.npmjs.com/misc/config#link。
请注意,使用此选项时,不得在您的版本控制中包含node_modules
,因为npm
会将符号链接放入node_modules
中全局安装的包中。全局安装位置因机器而异,因此如果node_modules
处于版本控制状态,则可能会链接到不存在的位置。