从私有 gitlab 注册表安装多个 npm 包

时间:2020-12-26 10:41:16

标签: node.js npm gitlab

我使用 gitlab 来托管我的私有 npm 包。目前我有 2 个项目发布到 gitlab 包注册表。这两个包都被另一个项目使用(假设是第三个项目)。根据 gitlab 文档,我使用以下命令在第三个项目中安装了这两个包:

npm config set @myscope:registry https://gitlab.com/api/v4/projects/<first-project-id>/packages/npm/
npm config set "//gitlab.com/api/v4/projects/<first-project-id>/packages/npm/:_authToken" "<auth-token>"
npm install @myscope/first-package

npm config set @myscope:registry https://gitlab.com/api/v4/projects/<second-project-id>/packages/npm/
npm config set "//gitlab.com/api/v4/projects/<second-project-id>/packages/npm/:_authToken" "<auth-token>"
npm install @myscope/second-package

我的问题是现在我不能再运行简单的“npm install”了,因为我的第三个项目依赖于 2 个私有包。当然,我可以在第三个项目中运行“npm install”之前调用“npm config set”,但问题是当我为第二个项目调用“npm config set”时,它替换了第一个配置(因为两者都有相同的范围)。所以我只能安装 1 个包,第二个我收到一个错误,因为它找不到(因为它在 gitlab 中有另一个项目 ID,因此另一个包注册表 url)。我已经尝试了以下但没有成功:

npm config set @myscope/first-package:registry https://gitlab.com/api/v4/projects/<first-project-id>/packages/npm/
npm config set "//gitlab.com/api/v4/projects/<first-project-id>/packages/npm/:_authToken" "<auth-token>"
npm install @myscope/first-package

npm config set @myscope/second-package:registry https://gitlab.com/api/v4/projects/<second-project-id>/packages/npm/
npm config set "//gitlab.com/api/v4/projects/<second-project-id>/packages/npm/:_authToken" "<auth-token>"
npm install @myscope/second-package

但是现在我无法安装任何软件包。那么,有人知道如何为共享相同范围但具有不同 url 的包设置 registry-url 吗?

1 个答案:

答案 0 :(得分:0)

我终于通过使用实例级安装解决了这个问题。首先,我认为它对我不起作用,因为它仍然告诉我 404。但问题是 gitlab 指示我运行 npm config set '//gitlab.com/api/v4/packages/npm/:_authToken' "<my-token>"。但这在我的 Windows 上不起作用,因为 url 周围有撇号。我用 " 替换了它们,现在一切正常。