我正在开发 2 个 node.js 包,每个包都在自己的 git 存储库中管理。包裹B
取决于套餐A
,所以我的本地目录结构如下所示:
A1/
B/
node_modules/
A2/
如果我更改本地代码A1
,我想测试一下B
在将其推送到公共存储库之前。我怎样才能做到这一点?
以目前的状态来说,B
有它自己的本地副本(A2
),所以它引用了不同的版本。B
是一个公共包,所以我想避免直接修改源代码B
参考A1
.
一种可能的解决方案是拥有 2 个本地副本B
: B1
是已发布的公共版本,它有自己的本地依赖项A2
, and B2
是我自己的私人版本,直接引用A1
使用类似的东西require('./../A1')
.
A1/
B1/
node_modules/
A2/
B2/
这看起来有点丑陋(并且会迫使我保留 2 个副本B
),我想知道是否有推荐的方法来处理这种情况?
Thanks.
在最简单的情况下,符号链接就可以解决问题。但您可以更进一步,使用某种奇特的构建系统,如 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
安装。所以它也非常便携。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)