管理具有依赖性的2+ nodejs包的开发

时间:2014-06-29 10:08:37

标签: node.js git package npm

我正在开发2个node.js包,每个包都在自己的git仓库中管理。包B取决于包A,因此我的本地目录结构如下所示:

A1/
B/
  node_modules/
    A2/

如果我对A1的本地代码进行了更改,我希望在将其推送到公共存储库之前使用B进行测试。我怎么能这样做?

在当前状态下,B拥有自己的本地副本(A2),因此它引用了不同的版本。 B是一个公开包,因此我希望避免直接修改B的源代码以引用A1

一种可能的解决方案是拥有B的2个本地副本:B1是已发布的公共版本,它在A2上具有自己的本地依赖关系,而B2是我自己的私有版本,使用类似A1的内容直接引用require('./../A1')

A1/
B1/
  node_modules/
    A2/
B2/

这看起来很丑陋(会强迫我保留2份B),我想知道是否有推荐的方法来处理这种情况?

感谢。

1 个答案:

答案 0 :(得分:1)

在最简单的情况下,符号链接可以解决问题。但你可以更进一步,使用某种花哨的构建系统,如grunt,gulp等。 我为所有项目使用经典的make脚本。因此,您可以在测试之前将一个项目复制到另一个项目中,例如:

NPM = /usr/bin/env npm
MODULES = ./node_modules/
PROJECTS_PATH = ../
DEPENDENCY = project_a/

default: test

test: copy
    $(NPM) test

copy:
    @rm -rf $(MODULES)$(DEPENDENCY)
    @cp -r $(PROJECTS_PATH)$(DEPENDENCY) $(MODULES)$(DEPENDENCY)

install:
    @rm -rf $(MODULES)
    $(NPM) install

.PHONY: test

它不是最好的构建脚本,但它可以完成这项工作。大多数unix系统都会安装make。所以它也很便携。