使用依赖性pipe理2+ nodejs包的开发
我正在开发2个node.js包,每个包都在自己的git仓库中进行pipe理。 包B
依赖于包A
,所以我的本地目录结构如下所示:
A1/ B/ node_modules/ A2/
如果我对A1
的本地代码进行更改,我想先用B
对其进行testing,然后再推送到公共存储库。 我怎样才能做到这一点?
在当前状态下, B
有自己的本地副本( A2
),所以它引用了不同的版本。 B
是公开包,所以我想避免直接修改B
的源代码到引用A1
。
一个可能的解决scheme是有2个本地副本B
: B1
是释放的公共版本,它有自己的本地依赖于A2
,而B2
是我自己的私人版本,使用类似于require('./../A1')
。
A1/ B1/ node_modules/ A2/ B2/
这看起来很丑陋(并且会迫使我保持B
两份),而且我想知道是否有推荐的方法来处理这种情况?
谢谢。
在最简单的情况下,符号链接将会诀窍。 但是你可以进一步去使用一些像grunt,gulp等那样的花哨的构build系统。 我为我的所有项目使用经典的make脚本。 所以你可以在testing之前将一个项目复制到另一个项目中,例如:
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
这不是最好的构build脚本,但它会完成这项工作。 大多数unix系统将会安装。 所以它也是非常便携的。