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

Unable to set correct npm config for group registry

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

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

# 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/

所以我的 .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>

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

我无法理解的是为什么一个范围内的包应该引用一个独特的项目url?

因此,我无法安装两个包:我的范围包的 url 仅对其中一个有效。

我查看了 api 端点到 return 我组包的列表我发现了这个: 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>

但是没用。 在 group/group-id/packages 路线上,我只获得 gitlab 信息,但没有 npm 友好格式的信息。

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

实例级端点似乎符合您的情况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>"

您应该可以发布 @mygroup/project1 & @mygroup/project2

我在使用 yarn (1.22.10) 时遇到了一些麻烦,所以我会 post 在这里提供更多详细信息,以便为阅读本文的任何人节省几个小时。

由于某些未知原因,我能够使用 npm 安装包,但不能使用 yarn 安装包,我得到了 Request failed \"404 Not Found\"

我最终在项目的根目录下创建了一个 .npmrc 文件(我正在使用 docker),其内容如下:

@my-org:registry=https://gitlab.com/api/v4/packages/npm/
//gitlab.com/api/v4/packages/npm/:_authToken=<GITLAB_TOKEN_API_SCOPE>
//gitlab.com/api/v4/projects/<ID_PROJECT_1>/packages/npm/:_authToken=<GITLAB_TOKEN_API_SCOPE>
//gitlab.com/api/v4/projects/<ID_PROJECT_2>/packages/npm/:_authToken=<GITLAB_TOKEN_API_SCOPE>

yarn 需要第 3 行和第 4 行,但 npm.

不需要

要使其正常工作,请将 @my-org 替换为您的 gitlab 组织名称,将 gitlab.com 替换为您的项目所在的 url,将 <ID_PROJECT_X> 替换为您的项目的 ID想要通过具有 API 范围的个人令牌安装和 <GITLAB_TOKEN_API_SCOPE>