npm从私人registry安装,回退到一个git仓库的URL

对于npm我是一个新手,所以请帮助。

比方说,我有一些模块,我正在使用一个Git仓库为他们每个人,我也安装了sinopia有一个私人的registry。 问题是我们是2队。 一个城市的团队和另一个团队是世界末日。 在我的团队中,我已经安装了私人registry在本地networking中可用。 这里的问题是,当我们推进git时,另一个团队没有自己的私人registry,即使他们做了,他们也需要在他们的私人registry中发布每个模块的每个版本。 另一个问题是,我们不能(也不想)通过IP将sinopia服务器公开。

现在的问题是:我们如何configurationpackage.json / npm来pipe理私有registry(如果registry响应)和git存储库的依赖关系(如果私人registry不响应 – 也就是说存在 – )。

我知道我们可以设置每个依赖关系来引用一个git标签/分支/提交,但是我们也想在可能的情况下使用registry。

UPDATE

所以基本上我会需要一个package.json,知道如果这部分失败:

 "dependencies": { "app.core": "0.1.1" } 

因为私人registry没有安装或不可用,它仍然可以加载这样的依赖:

 "dependencies": { "app.core": "git+ssh://git@repo.mydomain.com:group/app-core.git#v0.1.1" }, 

另外请注意,我更喜欢可以在git仓库中推送的东西,这样任何一个团队都不应该在本地更改package.json。

希望有人能帮忙。

唯一的办法,我发现现在的工作是有这样的package.json:

 "scripts": { "postinstall" : "node fallbackDependencies.js" } "dependencies": { "app.core": "git+ssh://git@repo.mydomain.com:group/app-core.git#v0.1.1" }, "optionalDependencies": { "app.core": "0.1.1" } 

然后在fallbackDependencies.js文件中运行一个脚本,该脚本从package.json中获取所有依赖项,这些依赖项也位于optionalDependencies并为每个依赖项检查node_modules文件夹中是否存在具有该名称的文件夹。 如果没有文件夹,则运行npm install <json.dependencies[x]>

这是我能想到的唯一的临时解决scheme。

如果有人有更好的方法,请随时回答。