首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >npm从私有注册表安装,并回退到git存储库URL

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

Stack Overflow用户
提问于 2014-05-07 09:09:16
回答 1查看 3.1K关注 0票数 6

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

假设我有一些模块,我正在为每个模块使用一个git存储库,我还安装了sinopia以拥有一个私有注册中心。问题是我们是两支球队。一支队伍在一个城市,另一个队在世界末日。在我的团队中,我已经安装了本地网络中可用的专用注册表。这里的问题是,当我们推动git时,其他团队没有自己的私有注册中心,即使有,他们也需要在其私有注册中心中发布每个模块的每个版本。另外一个问题是我们不能(也不想)通过IP公开sinopia服务器。

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

我知道我们可以设置每个依赖项来引用git标记/分支/提交,但如果可能的话,我们也希望使用注册表。

更新

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

代码语言:javascript
复制
"dependencies": {
    "app.core": "0.1.1"
}

由于未安装或不可用的私有注册表,它仍然可以从以下内容加载依赖关系:

代码语言:javascript
复制
"dependencies": {
    "app.core": "git+ssh://git@repo.mydomain.com:group/app-core.git#v0.1.1"
},

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

希望有人能帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 17:21:05

我发现目前唯一可行的方法是拥有这样一个package.json:

代码语言:javascript
复制
"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]>

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

如果有人对此有更好的解决办法,请随时回答。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23513486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档