.npmrc 忽略了私有包
Posted
技术标签:
【中文标题】.npmrc 忽略了私有包【英文标题】:.npmrc ignored private package 【发布时间】:2021-06-17 00:29:59 【问题描述】:我正在尝试在 gitlab 私有实例上使用我的第一个私有 npm 包
我将@ajouve:registry=https://gitlab.my-website.io/api/v4/packages/npm/
添加到.npmrc
npm get
命令似乎返回了正确的配置
; "project" config from /Volumes/Work/service/.npmrc
@ajouve:registry = "https://gitlab.my-website.io/api/v4/packages/npm/"
; "cli" config from command line options
omit = []
user-agent = "npm/7.5.4 node/v12.18.1 darwin x64"
; node bin location = /usr/local/bin/node
; cwd = /Volumes/Work/service
; HOME = /Users/ajouve
; Run `npm config ls -l` to show all defaults.
但是当我想添加包时
npm install --save @ajouve/my-module
我有
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@ajouve/my-module Not found
npm ERR! 404
npm ERR! 404 '@ajouve/my-module@*' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/ajouve/.npm/_logs/2021-03-19T15_06_50_186Z-debug.log
转到https://registry.npmjs.org
运行npm config ls -l | grep registry
我有
metrics-registry = "https://registry.npmjs.org/"
registry = "https://registry.npmjs.org/"
@ajouve:registry = "https://gitlab.my-website.io/api/v4/packages/npm/"
【问题讨论】:
您好,您可以尝试更新注册表字段吗? @MohitSahu 更新.npmrc
?我也尝试只设置 registry=https://gitlab.my-website.io/api/v4/packages/npm/
但同样的问题
你可以在运行命令时检查注册表字段 - npm config ls -l
@MohitSahu 我更新了帖子
【参考方案1】:
你可以试试这个:
npm config set registry http://registry.npmjs.org
npm-registry
或者有时您只需要添加用户和登录即可使用私有包解决此问题。看看这个文档:npm-addUser
命令应该是这样的:
npm adduser
npm login
【讨论】:
【参考方案2】:作为几天前开始使用 Gitlab 注册表的人,我遇到了同样的问题。 在 .npmrc 上,范围名称必须符合您的数据包范围。 比如我们有项目A,它的package.json应该是这样的:
"name": "@myscope/myproject",
...Rest of your package.json
在您的项目 B 上,.npmrc 必须与范围匹配
@myscope:registry=https://gitlab.com/api/v4/packages/npm/
然后,确保您使用作用域注册表进行身份验证,否则 NPM 将抛出错误或忽略并在 NPM 注册表上搜索
$ npm config set @myscope:registry https://gitlab.com/api/v4/packages/npm/
$ npm config set -- '//gitlab.com/api/v4/packages/npm/:_authToken' "<your_token>"
注意:
然后,你就可以轻松安装你的包了
$ npm install --save @myscope/myproject
编辑:如果您使用的是自托管的 gitlab 实例,它遵循相同,只需记住将“gitlab.com”更改为您的 gitlab 实例 url。
【讨论】:
【参考方案3】:用 git+ssh:// 代替 git://
npm i -S git+ssh://git@gitlab.com:<org>/<project>.git
在这里你可以得到几个答案
Install npm module from gitlab private repository
【讨论】:
谢谢,但这是我之前使用的解决方案。我想换成真正的注册表【参考方案4】:第一次安装需要运行
npm config set @ajouve:registry=https://gitlab.my-website.io/api/v4/packages/npm/
【讨论】:
【参考方案5】:试试这个,应该可以的。
npm install --save @ajouve/my-module --registry=https://gitlab.my-website.io/api/v4/packages/npm/
另一种方法是在私有实例中创建组端点,它将托管 + 代理指向公共包,并更新您的注册表以指向该端点,以便私有和公共包都可以工作。
【讨论】:
谢谢,但同样的问题`未找到 - GET registry.npmjs.org/@ajouve/my-module - 未找到`与npm install --save @ajouve/my-module --registry=https://gitlab.my-website.io/api/v4/packages/npm/
以上是关于.npmrc 忽略了私有包的主要内容,如果未能解决你的问题,请参考以下文章