Node.JS:使用多个Git存储库
我们有一个node.js项目,其中有几个跨越多个Git存储库的模块。 模块之间有依赖关系。
例如:
common
模块驻留在自己的存储库中。 execution
模块驻留在一个单独的存储库中,并且对common
的(npm)依赖。
因此, execution
的目录结构包括(一旦execution
npm install
)在node_modules
下node_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
克隆。
如何使用这种方法
- 在您的
common
目录中键入:npm link
。 这将创build一个全局引用到npm
的common
文件夹,common
由common
标识(假设common
是您的节点包的确切名称)。 - 在你的
execution
目录里input:npm link common
。 这将将node_modules/common
文件夹符号链接到node_modules/common
目录的本地副本中。
当您完成对公用文件夹的更改后,需要联机更新该程序包,然后更改execution
的package.json
以指向更新的common
版本。
我更喜欢这个方法,build议将package.json
指向本地存储库,因为这会使package.json
处于无效状态,您可能会意外提交并推送。