我正在开发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
),我想知道是否有推荐的方法来处理这种情况?
感谢。
答案 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
。所以它也很便携。