我有一个无法访问互联网的构建服务器,我需要解决来自 github.com 和registry.npmjs.org 的依赖关系。构建服务器可以访问 Artifactory,因此我创建了一个 NPM 存储库来代理registry.npmjs.org,并且它正在工作,并且我刚刚创建了一个 VCS 存储库来代理 github.com。
我如何配置 npm 来解决这两个问题?由于这两个存储库是不同的类型,因此我无法将它们聚合到一个虚拟存储库中。 NPM 是否可以配置为解决这两者的依赖关系?
VCS 存储库与 NPM 依赖项的相关性为零。 VCS 存储库只是远程 git 服务器上一组 API 的网关,可帮助您缓存源二进制文件(即特定分支/标签甚至发布版本的 zip/tarball)。 npm 客户端不熟悉 Artifactory 为此类存储库公开的 REST 端点。
对于在 package.json 中引用 github 存储库的 NPM 包(请参阅作为依赖项的 URL 和作为依赖项的 Git URL 部分here https://docs.npmjs.com/files/package.json),你想看看 Artifactory 的依赖重写机制 https://www.jfrog.com/confluence/display/RTF/Npm+Registry#NpmRegistry-AutomaticallyRewritingExternalDependencies.
由于您的 NPM 客户端运行在无法访问互联网的计算机上,因此您自己的 package.json 文件不应直接依赖于“github 依赖项”,因为这些文件会使客户端绕过 ~/.npmrc 内的注册表配置并转到直接到github而不是Artifactory。
当项目的某个依赖项的 package.json 使用 github 依赖项,并且该包是通过 Artifactory 解析时,依赖项重写机制会在将 package.json 返回给客户端之前动态修改 package.json,以便后续的依赖项请求解析此类依赖项是通过 Artifactory 尝试的,而不是通过 github——这对于像您这样的用例来说是完美的。
总之,您应该专门使用 Artifactory 上的 NPM 存储库,但也要利用虚拟存储库的依赖项重写机制,以避免通过 github 直接解析依赖项。
HTH,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)