【问题标题】:ReactNative: is it possible to avoid storing all dependencies in node_modules subfolderReact Native:是否可以避免将所有依赖项存储在 node_modules 子文件夹中
【发布时间】:2017-04-09 23:06:25
【问题描述】:

我对 ReactNative 很陌生,如果很明显,我很抱歉,但是..

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

难道不能从机器上的通用 node_modules 中检索所有这些相同的模块吗?

【问题讨论】:

  • 根据您的 VCS,您应该将其配置为忽略 node_modules 文件夹(例如对于 Git,它是 .gitignore 文件)并仅保留文件 package.json。任何拥有package.json 的人都可以在他们的机器上获取相同的依赖项。

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


【解决方案1】:

您永远不想将嵌套在 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 来实现的。

一些不错的读物...

【讨论】:

    【解决方案2】:

    我会回应 Brad 的回答:不要将 node_modules 放入版本控制中。 npm install 将从package.json 安装正确的版本。只需将package.json 放在版本控制中,而不是node_modules

    但是,如果您仍想节省磁盘空间,您可以使用link 选项将一些依赖项安装在一般的node_modules 文件夹中:

    npm config set link true -g
    

    您可以在此处阅读有关link 的更多信息:https://docs.npmjs.com/misc/config#link

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 2021-08-19
      • 1970-01-01
      相关资源
      最近更新 更多