npm从私有注册表安装回退到git存储库URL

时间:2014-05-07 09:09:16

标签: node.js git npm

我是关于npm的新手,所以请帮忙。

让我们说我有一些模块,我正在为每一个使用git存储库,我还安装了sinopia来拥有私有注册表。问题是我们是2支球队。一个城市的团队和另一个团队正处于世界末日。在我的团队中,我已经安装了私有注册表,可以在本地网络中使用。这里的问题是,当我们推送git时,另一个团队没有自己的私有注册表,即使他们这样做,他们也需要在他们的私有注册表中发布每个模块的每个版本。另一个问题是我们无法(并且不想)通过IP公开sinopia服务器。

现在的问题是:我们如何配置package.json / npm来管理私有注册表(如果注册表响应)和git存储库(如果私有注册表没有&#)的依赖关系39; t回应 - 也就是说它不存在 - )。

我知道我们可以设置每个依赖项来引用git标签/分支/提交,但我们也希望在可能的情况下使用注册表。

更新

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

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

因为私有注册表未安装或不可用,它仍然可以从以下内容加载依赖:

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

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

希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:1)

我发现目前工作的唯一方法是拥有一个像这样的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]>

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

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

相关问题