ReactNative:是否可以避免在node_modules子文件夹

时间:2016-11-25 14:07:02

标签: node.js npm react-native node-modules

我对ReactNative很新,很抱歉,如果它很明显,但是......

通过CLI初始化的每个RN项目都有大量节点模块存储在project_root / node_modules中。不是我会介意,但如果你有几个项目,它似乎是多余的,并占用时间/空间将其移动到源版本控制系统。

是不是可以从机器上的一般node_modules中检索所有这些相同的模块呢?

2 个答案:

答案 0 :(得分:4)

您永远不希望在源控件中存储嵌套在node_modules中的依赖项...它通常会破坏版本控制和依赖项的整个目的。您的package.json文件将指定版本,因此当您运行npm install时,它确切地知道要抓取哪些依赖项。

作为替代方案,Yarn是Facebook开发的一个正在兴起的软件包客户端,它可以更好地在本地缓存您的软件包,以便多个项目重用相同的依赖项,它仍然满足将它们保存在node_modules中的需要,但不需要为每个请求执行http请求。

Yarn不会将NPM替换为软件包注册表,只是一个更好的客户端来下载,维护和缓存这些软件包。

Yarn还添加了一个yarn.lock文件(类似于Ruby的Gemfile.lock),允许您锁定应用程序中使用的特定版本package.jsonThis 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

您可以在此处详细了解linkhttps://docs.npmjs.com/misc/config#link

请注意,使用此选项时,不得在您的版本控制中包含node_modules,因为npm会将符号链接放入node_modules中全局安装的包中。全局安装位置因机器而异,因此如果node_modules处于版本控制状态,则可能会链接到不存在的位置。