配置npm以使用artifactory作为npm注册表和github的代理来解析依赖关系

时间:2017-01-14 00:50:17

标签: github npm artifactory

我有一个无法访问Internet的构建服务器,我需要解决github.com和registry.npmjs.org的依赖关系。构建服务器可以访问Artifactory,所以我创建了一个NPM repo来代理registry.npmjs.org并且它正在工作,我刚刚为github.com的代理创建了一个VCS repo。

如何配置npm以解决这两个问题?由于2个回购是不同的类型,我不能将它们聚合成一个虚拟回购。可以将NPM配置为解决这两者的依赖关系吗?

1 个答案:

答案 0 :(得分:3)

VCS repos与NPM依赖关系无关。 VCS repo只是远程git服务器上一组API的网关,它可以帮助您缓存源二进制文件(即特定分支/标记的zip / tarball甚至是版本)。 npm客户端不熟悉Artifactory为此类repos公开的REST端点。

对于在其package.json中引用github repos的NPM包(请参阅URL作为依赖关系&Git URL作为依赖关系部分here),您需要查看Artifactory的dependency-rewrite mechanism

由于您的NPM客户端在无法访问Internet的计算机上运行,​​因此您自己的package.json文件不应直接依赖于“github依赖项”,因为这些会使客户端绕过〜/中的注册表配置。 npmrc并直接转到github而不是Artifactory。

当你的一个项目的依赖项的package.json使用github依赖项,并且这个包通过Artifactory解析时,依赖项重写机制会在将它返回给客户机之前动态修改package.json,以便后续的依赖项请求通过Artifactory尝试解决这种依赖关系,而不是通过github - 这非常适合像你这样的用例。

总之,您应该专门在Artifactory上使用NPM存储库,但也要利用Virtual Repository的依赖重写机制,以避免通过github直接解析依赖关系。

HTH,