如何使用npm处理nodejs中的本地包依赖项

时间:2014-12-04 21:50:00

标签: node.js npm

我们应该如何处理在其他本地包中依赖的本地包?

为了简单起见,请说我们有以下套餐

  • api - 表达申请
  • people - 一个与人打交道的方案
  • data-access - 处理数据访问的软件包

然后依赖

  • api取决于people
  • people取决于data-access

目前,我们已将这些依赖项设置为文件依赖项。

即。 api package.json会有

"dependencies": {
  "people": "file:../people"
}

麻烦的是,当我们对一个软件包进行更新并希望其他软件包中的更改依赖于它时,我们发现它是PITA。

我们想到的选项是:

  • npm install - 但如果进行了更改,这将不会覆盖以前安装的软件包,因此我们必须从node_modules目录中删除旧的软件包并重新运行npm install ..如果包依赖性很深,那可能很傻。

  • npm链接 - 我们没有出售这个想法,因为它无法在版本控制中存活...现在只考虑它,也许我们有某种本地构建脚本这将为我们运行npm link命令...这样它可以在版本控制中存活。这会是一个笨拙的工作吗?

  • 咕噜 - 我们还没有深入探讨这个问题,但感觉这是一个好方向。我们偶然发现了一些谷歌搜索:https://github.com/ahutchings/grunt-install-dependencies

那么,哪种选择对我们的情况最有效? 还有其他我们尚未想过的选择吗?

聚苯乙烯。我们是一个.NET商店在节点上做PoC,所以假设我们什么都不知道!

PPS。如果你坚信我们错误地设置了我们的项目,并且我们不应该有更小的个人套餐,请在评论中告诉我一些关于这个主题的阅读链接。

1 个答案:

答案 0 :(得分:1)

所以,我同意使用“许多小包装”通常是一个好主意。如果你还没有,请查看12factor.net。

那就是说,在你问题的具体答案中,我说你最好的选择是主要考虑你想要如何维护它们。

如果'子组件'都只是您应用的一部分(例如,数据访问意味着),那么我会将它们保存在相同的文件夹结构中,将它们映射到最后是package.json,只需要require个你需要它们的地方。在这种情况下,所有版本都在一起,并且是同一个git存储库的一部分。

如果你真的想要或者需要将它们全部放在单独的git存储库中,那么你可以做npm链接,但说实话我发现在package.json中使用URL语法更有用:

dependencies: {
  "people" : "git://path.to.git:repo@version.number"
}

然后,当您想要显式更新其中一个依赖项时,您只需要在package.json中删除版本号并再次运行npm install