我们有一个node.js项目,其中包含几个模块,这些模块跨越多个Git存储库。模块之间存在依赖关系。
例如:
common
模块驻留在自己的存储库中。
execution
模块驻留在一个单独的存储库中,并且对common
具有(npm)依赖关系。
因此,execution
中的目录结构包括npm install
执行后common
node_modules
下的execution
。
我们的问题是,当开发人员处理common
时,他们有时也需要修改node_modules/common
。为了“看到'他们的更改,他们有我们目前使用的两个选项之一:修改common
(这是丑陋的,未跟踪等),或修改{{1}}存储库,然后 push + npm install < / em>他们的变化(虽然更清洁,但非常麻烦)。
我们想知道的是,如果这个工作流程有更好的选择......
答案 0 :(得分:6)
您可以避免使用package.json
命令修改npm link
文件。这将自动配置execution
包以将其node_modules/common
目录符号链接到您的common
的本地克隆。
如何使用此方法
common
目录类型中:npm link
。这将为common
中的npm
文件夹创建一个全局引用,由common
标识(假设common
是您的节点包的确切名称)。execution
目录类型中:npm link common
。这会将node_modules/common
文件夹符号链接到common
目录的本地副本。如果您对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 +
,则可能需要更新节点