我有几个本地(私有)模块,我试图将其设置为可以从任何本地用户的计算机直接从git存储库安装。
我已经可以设置它,所以如果首先将文件克隆(例如通过git)到本地机器,我可以“npm install”顶层模块,并且将找出并安装所有其他依赖项。我通过做类似的事情来做到这一点:
apt-get install /path/to/top/top/level/module
然后因为所有包都在同一个顶级目录下,在每个package.json
设置依赖关系到相对路径,例如
"dependencies": {
"another-module": "../another-module"
}
但是,在安装之前,必须在计算机上拥有源的本地副本并不总是令人满意的。有了很多软件包,只需要手动“npm install”手动“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"
}
但这非常脆弱。如果服务器的任何细节发生更改,则必须更改每个依赖项。此外,它可以防止多个不同位置的可能性 - 一次锁定在一个位置。事实上,它甚至可以阻止同一台机器上的所有访问存储库的不同用户访问它,因为每个用户都有一个不同的“user @”部分!
如果我使用原始依赖项的相对路径不起作用 - 它会尝试将其解释为相对于我正在安装的目录,当然该目录尚不存在!
如何安装git + ssh存储库并正确保留依赖关系,而无需将它们绑定到特定位置或用户?是否有一些方法可以在package.json中使用环境变量,所以我可以这样做?
"dependencies": {
"another-module": "${PRIVATE_NPM_ROOT}/another-module"
}