GitLab同一群组下多个私有scoped npm包的registry配置问题咨询
解决方案
错误原因
- 单个npm作用域仅可绑定1个registry地址,初始配置将
@mygroup作用域绑定到项目1的registry后,npm只会在该地址下检索包,自然无法获取到项目2内托管的包 - 你填写的群组级registry路径格式错误,缺失
/-/路径段,导致返回的是GitLab普通页面数据,而非npm客户端可识别的包元数据
正确.npmrc配置
# 配置@mygroup作用域统一使用群组级registry,注意路径中的/-/不可省略 @mygroup:registry=https://gitlab.com/api/v4/groups/mygroup/-/packages/npm/ # 给群组级registry配置认证token //gitlab.com/api/v4/groups/mygroup/-/packages/npm/:_authToken=<你的个人访问token> //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>
生效前置要求
- 你使用的个人访问token需开通
read_package_registry权限,如需发布包还需开通write_package_registry权限 - 该token对应的账号需拥有群组下两个npm包项目至少Reporter级别的权限
额外说明
如果需要向对应项目发布新版本的包,在待发布项目的根目录.npmrc中添加对应项目的发布配置即可,不会影响全局安装时的群组级检索逻辑:
"publishConfig": { "@mygroup:registry": "https://gitlab.com/api/v4/projects/<对应项目ID>/packages/npm/" }
内容的提问来源于stack exchange,提问作者Existe Deja
相关产品推荐
相关产品推荐

