无法为组注册表设置正确的 npm 配置

Geo*_*bol 5 npm gitlab .npmrc

我有两个 npm 包,它们是在团体组织下托管在 gitlab.com 上的私有存储库。我的第一个包运行良好,并由同一组织的用户更新和下载。

要安装私有范围的包,文档说:

# Set URL for your scoped packages.
# For example package with name `@foo/bar` will use this URL for download
npm config set @foo:registry https://gitlab.example.com/api/v4/projects/<your_project_id>/packages/npm/
Run Code Online (Sandbox Code Playgroud)

所以我的.npmrc看起来像

@mygroup:registry=https://gitlab.com/api/v4/projects/<id-project-1>/packages/npm/
//gitlab.com/api/v4/projects/<id-project-1>/packages/npm/:_authToken=<token>
//gitlab.com/api/v4/projects/<id-project-2>/packages/npm/:_authToken=<token>
//gitlab.com/api/v4/packages/npm/:_authToken=<token>
Run Code Online (Sandbox Code Playgroud)

显然,第一个包一切正常,但第二个包则不然。

我不明白的是为什么作用域包应该引用唯一的项目 url

因此,我无法安装这两个包:我的作用域包的 url 仅对其中一个有效。

我查看了 api 端点以返回我的组包列表,我发现了这个: https: //docs.gitlab.com/ee/api/packages.html#within-a-group

所以我更新了我.npmrc

@mygroup:registry=https://gitlab.com/api/v4/groups/mygroup/packages/npm/
//gitlab.com/api/v4/projects/<id-project-1>/packages/npm/:_authToken=<token>
//gitlab.com/api/v4/projects/<id-project-2>/packages/npm/:_authToken=<token>
//gitlab.com/api/v4/packages/npm/:_authToken=<token>
Run Code Online (Sandbox Code Playgroud)

但这不起作用。在group/group-id/packages路上我只得到 gitlab 信息,但没有任何 npm 友好格式的信息。

如何安装同一组下托管的多个私有范围的 npm 包?

mpr*_*net 1

实例级端点似乎可以回答您的情况instance-level-npm-endpoint

使用:

npm config set @mygroup:registry https://gitlab.example.com/api/v4/packages/npm/
npm config set -- '//gitlab.example.com/api/v4/packages/npm/:_authToken' "<your_token>"
Run Code Online (Sandbox Code Playgroud)

您应该能够发布@mygroup/project1&@mygroup/project2

  • 我现在在 2022 年也尝试过这个,但这似乎不起作用。我们有来自 2 个项目的多个包,并且使用实例级 npm 端点仍然会得到 404 (5认同)