无法为组注册表设置正确的 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>
。
我有两个 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>
。