npm通过package.json中的依赖来安装private git + ssh版本库

我有几个本地(私人)模块,我试图设置可以从任何本地用户的机器直接从git仓库安装。

我已经可以设置它了,所以如果文件首先被克隆(例如,通过git)到本地机器上,我可以“npm install”顶层模块,所有其他的依赖关系将被计算出来并被安装。 我做这样做是这样的:

apt-get install /path/to/top/top/level/module 

然后所有的包都在同一个顶层目录下,在每个package.json设置依赖关系为相对path,例如

 "dependencies": { "another-module": "../another-module" } 

但是,在安装之前,并不总是需要在机器上安装源代码的本地副本。 有了很多软件包,只需要手动“npm install”所有的依赖关系,而不是用git来克隆每个项目,只需要更多的工作。 那么目标就是使用如下的东西:

 npm install git+ssh://user@somehow.local/home/user/git/another-module 

这仍然有可能使用依赖,现在改变上面的东西是这样的:

 "dependencies": { "another-module": "git+ssh://user@somehow.local/home/user/git/another-module" } 

但是这非常脆弱。 如果服务器的任何细节发生变化,则必须更改每个依赖关系。 此外,它防止了多个不同地点可供select的可能性 – 一次将所有东西locking在一个地点。 事实上,它甚至可以防止同一台机器上的所有访问存储库的不同用户访问它,因为每个用户都有不同的“user @”URL部分!

如果我使用每个原始依赖关系的相对path不起作用 – 它会尝试将其解释为与我正在安装的目录相关,当然这个目录还不存在!

我如何安装git + ssh版本库并正确保留依赖关系,而不将它们绑定到特定位置或用户? 有没有可能在package.json中使用一个环境variables的方法,所以我可以做这样的事情?

 "dependencies": { "another-module": "${PRIVATE_NPM_ROOT}/another-module" }