从私有 gitlab 注册表安装多个 npm 包
Posted
技术标签:
【中文标题】从私有 gitlab 注册表安装多个 npm 包【英文标题】:Install multiple npm packages from private gitlab registry 【发布时间】:2021-04-03 22:08:33 【问题描述】:我正在使用 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】:我终于通过使用实例级安装解决了这个问题。首先,我认为它对我不起作用,因为它仍然告诉我 404。但问题是 gitlab 指示我运行 npm config set '//gitlab.com/api/v4/packages/npm/:_authToken' "<my-token>"
。但这在我的 Windows 上不起作用,因为 url 周围有撇号。我将它们替换为 ",现在一切正常。
【讨论】:
我有类似的问题。我尝试将两个 npm 库添加到我的项目中,它们存储在 gitlab 包注册表中,但 npm 正在 npmjs.org 中查找它们,而不是在我的 gitlab 中。即使我用双引号添加了两个库,npm 仍然会用 authToken 覆盖行。还有windows机器。 实际上,npm 不会覆盖 authToken,但我只能为最后添加的库执行 npm install。第一个节点正在查看 npmjs.org以上是关于从私有 gitlab 注册表安装多个 npm 包的主要内容,如果未能解决你的问题,请参考以下文章
Yarn 包管理器:从私有 Bitbucket 存储库安装依赖项