【问题标题】:How to manage internal Node.JS modules如何管理内部 Node.JS 模块
【发布时间】:2012-08-26 17:32:46
【问题描述】:

在 node.js 应用程序中处理内部模块的首选方法是什么?

我的意思是,目前我们有一个相当大的应用程序,并且有几个依赖项,通过 npm 安装。我们在.gitignore 中有node_modules。因此它不在存储库中。我们使用npm shrinkwrap 来冻结模块版本,因此,在部署时,npm install 将我们需要的所有内容放在node_modules 中。

问题是,由于应用程序越来越大,我们希望将其拆分为更小的模块。现在,如果我创建一个 foo 模块并将其放入 node_modues,我需要在 repo 中允许它,这似乎不太好在 node_modules 中同时忽略和签出模块。

我们不能在 npm 注册表上发布这些,因为它们并不是真正的“公开”。

有什么我不知道的明显解决方案吗?

【问题讨论】:

  • 我只是将我的私有库/模块粘贴到项目下的 /lib 目录中,而不是 npm_modules 中。这样它们也可以包含在 Git 中。
  • 是的,有一个 lib 文件夹和 require('./lib/myThing') 是很常见的
  • 使用 lib 文件夹,我需要在每次需要时明确命名模块。我非常需要它们 :) 从各个地方。我不太喜欢require("../../../../../lib/foo")。将它们放在节点模块中会使访问更加容易。

标签: node.js github dependencies npm


【解决方案1】:

我同意您不将 3rd 方非 repo 内容与您的内部修订控制内容混合的审美。

NODE_PATH 搜索路径变量可以在这里为您提供帮助,您可以使用不同的目录,其内容受修订控制。

http://nodejs.org/api/modules.html

根据您对灵活性与复杂性的偏好,您可以考虑将各种节点模块从您保存它们的位置实际复制到输出目录(可能是“命名的 node_modules”,但不一定)的构建步骤。

【讨论】:

  • NODE_PATH 似乎是这里最优雅的方法。我可以将东西保存在 lib/ 中,并在 require 中按名称引用它们。由于环境变量已正确记录,我不认为它可以被视为黑客或其他东西:) 谢谢。
【解决方案2】:

一种常见的解决方案是将模块存储在某个私有 Git 存储库中,然后使用 git:// URL 作为依赖项; npm 知道如何将存储库克隆为依赖项。

【讨论】:

  • 谢谢,我对此进行了评估,但是我需要以某种方式授权我们的服务器访问私有 git 存储库。通过服务器公钥或 IP 范围。不过那也行。
猜你喜欢
  • 2016-04-15
  • 2011-11-29
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2021-08-21
相关资源
最近更新 更多