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

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

例如:

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

因此, execution的目录结构包括(一旦execution npm install )在node_modulesnode_modules

我们的问题是,当开发人员在execution ,他们有时需要修改common 。 为了“看到”他们的变化,他们有我们目前使用的两个选项之一:修改node_modules/common (这是丑陋的,未跟踪的等),或修改common存储库,然后推+ npm安装他们的变化,而更清洁,是相当繁琐的)。

我们想知道的是,如果这个工作stream程有更好的select,

我假设你正在使用它们作为依赖使用package.json,它允许你要求他们的名字而不是path。 ( 你也有这个版本处理的好东西 )。 我找不到任何选项来删除npm install的步骤,但是我发现了一些可以删除git push的步骤,并且会让你的npm安装更快。

本地依赖。
使用本地path作为依赖关系,这可以是你的其他git仓库,你可以直接改变你的依赖关系的仓库仓库。 这使您可以更改代码并在不推动的情况下进行testing。 (虽然你必须在主模块中再次执行npm install,这将在你的节点模块中复制你的依赖的工作副本)。

谨慎的话:一旦你完成了对你的依赖代码的最终修改,你必须小心谨慎,否则其他开发者可能会处于不一致的状态。

如何添加本地依赖项

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

请注意,这个本地依赖项function已添加到版本2.0中的npm。 所以你可能需要更新你的节点,如果你还没有npm 2.0+

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

如何使用这种方法

  1. 在您的common目录中键入: npm link 。 这将创build一个全局引用到npmcommon文件夹, commoncommon标识(假设common是您的节点包的确切名称)。
  2. 在你的execution目录里input: npm link common 。 这将将node_modules/common文件夹符号链接到node_modules/common目录的本地副本中。

当您完成对公用文件夹的更改后,需要联机更新该程序包,然后更改executionpackage.json以指向更新的common版本。

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