Node.JS:使用多个Git存储库

时间:2015-03-23 08:25:12

标签: node.js git repository npm

我们有一个node.js项目,其中包含几个模块,这些模块跨越多个Git存储库。模块之间存在依赖关系。

例如:

common模块驻留在自己的存储库中。 execution模块驻留在一个单独的存储库中,并且对common具有(npm)依赖关系。

因此,execution中的目录结构包括npm install执行后common node_modules下的execution

我们的问题是,当开发人员处理common时,他们有时也需要修改node_modules/common。为了“看到&#39;他们的更改,他们有我们目前使用的两个选项之一:修改common(这是丑陋的,未跟踪等),或修改{{1}}存储库,然后 push + npm install < / em>他们的变化(虽然更清洁,但非常麻烦)。

我们想知道的是,如果这个工作流程有更好的选择......

2 个答案:

答案 0 :(得分:6)

您可以避免使用package.json命令修改npm link文件。这将自动配置execution包以将其node_modules/common目录符号链接到您的common的本地克隆。

如何使用此方法

  1. common目录类型中:npm link。这将为common中的npm文件夹创建一个全局引用,由common标识(假设common是您的节点包的确切名称)。
  2. execution目录类型中:npm link common。这会将node_modules/common文件夹符号链接到common目录的本地副本。
  3. 如果您对common文件夹进行了更改,则需要在线更新该软件包,然后更改package.json execution以指向更新版本common

    我更喜欢这种方法而不是建议将package.json指向您的本地存储库,因为这会使您的package.json处于无效状态,您可能会意外提交并推送。

答案 1 :(得分:3)

我假设您使用package.json将它们用作依赖项,这允许您使用名称而不是路径来要求它们。 (你也可以使用它来处理版本。)。我找不到删除npm install步骤的任何选项,但我确实发现了一些可以删除git push的步骤,并且会使你的npm安装更快。

本地依赖。
使用本地路径作为依赖项,可以是您的其他git仓库,您可以直接对依赖项的git仓库进行更改。这允许您更改代码并在不推送的情况下对其进行测试。 (虽然您必须在主模块中再次执行npm安装,这将在您的节点模块中复制依赖项的工作副本)。

提醒注意:一旦完成两者的处理,您必须小心推动对依赖关系代码所做的最终更改,否则其他开发人员可能会处于不一致的状态。

如何添加本地依赖关系

 "dependencies" : {
       "here" : "file:./test/git/repo/here#0.0.1"
 }

请注意,此本地依赖项功能已添加到2.0版的npm中。因此,如果您还没有npm 2.0 +

,则可能需要更新节点