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

Gad*_*adi 5 git repository node.js npm

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

例如:

common模块驻留在自己的存储库中. execution模块驻留在单独的存储库中,并具有(npm)依赖性common.

因此,目录结构中execution包括:(一次npm install被执行)commonnode_modules.

我们的问题是,当开发人员正在开发时execution,他们有时也需要修改common.为了"看到"他们的更改,他们有我们目前使用的两个选项之一:修改node_modules/common(这是丑陋的,未跟踪的等),或修改common存储库,然后按+ npm安装他们的更改(虽然更清洁,非常麻烦).

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

Rot*_*rel 7

您可以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.

当你完成修改您的common文件夹,您需要在网上更新包,然后更改package.jsonexecution,以点的更新版本common.

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


Vis*_*ath 3

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

本地依赖项。
使用本地路径作为依赖项(可以是您的其他 git 存储库),您可以直接对依赖项的 git 存储库进行更改。这允许您更改代码并测试它而无需推送。(尽管您必须在主模块中再次执行 npm install ,这将在节点模块中复制依赖项的工作副本)。

警告:一旦完成了这两者的工作,您必须注意推送对依赖项代码所做的最终更改,否则其他开发人员可能会处于不一致的状态。

如何添加本地依赖

 "dependencies" : {
       "here" : "file:./test/git/repo/here#0.0.1"
 }
Run Code Online (Sandbox Code Playgroud)

请注意,此本地依赖项功能已在 2.0 版本中添加到 npm 中。因此,如果您还没有 npm 2.0+,您可能需要更新您的节点