我正在尝试访问托管在远程服务器中的私有npm注册表.我必须使用用户名和密码访问它.我这边没有代理人.
但是,我使用的用户名和密码具有URL不安全的字符.我试过adduser,npmjs,scl但我无法配置凭据:
npm WARN Name may not contain non-url-safe chars
Run Code Online (Sandbox Code Playgroud)
我试着设置NPM_USER和NPM_PASS命令行直接.我能够设置前者,但后者失败了.即使我使用简单的密码并尝试:
npm login
Run Code Online (Sandbox Code Playgroud)
它有失败,因为NPM_USER有一个相同的错误@
我正在npmrc用于在公共和私人注册表之间切换.我想避免像这样的工具Nexus/JFrog.
npm版本 - 4.0.5,操作系统是Windows 7
我在这里错过了什么?
总结一下,您的问题是您的私人注册表使用电子邮件地址作为用户名,npm 命令行工具目前不支持这种方式。您需要一种无需运行npm adduser或即可提供用户名的方法npm login。我不知道您使用的是哪个注册表,但我在使用Inedo 的 Proget 时遇到了同样的问题。
编辑:我在 2021 年 3 月遇到了同样的问题,Azure DevOps 中的 Azure Artifacts,因为 npm 命令行工具仍然不允许@输入用户名,而且vsts-npm-auth命令行工具在 Linux 或 Mac 上不起作用。我在 Artifactory 上也遇到了同样的问题。
如果您使用的是私有注册表并且使用范围来分隔不同的注册表,则可以创建一个如下所示的.npmrc文件:
#Settings for @SCOPENAME
@SCOPENAME:registry=https://DOMAIN/FEED/
//DOMAIN/FEED/:username=USER@DOMAIN
//DOMAIN/FEED/:_password=BASE64(PASSWORD)
//DOMAIN/FEED/:email=EMAIL_ADDRESS
//DOMAIN/FEED/:always-auth=true
#Settings for @OTHERSCOPENAME
@OTHERSCOPENAME:registry=...
Run Code Online (Sandbox Code Playgroud)
下一点可能很重要,但它取决于您的注册表的首选提要网址:如果没有尾随/,我无法使其正常工作,因此请小心尝试使用和不使用它。
获取密码的 base64 编码的一种简单方法是运行:
echo -n 'PASSWORD' | base64
Run Code Online (Sandbox Code Playgroud)
编辑:对于某些注册表,例如Azure Artifacts,您需要使用个人访问令牌而不是普通密码。查找有关如何创建令牌的注册表说明。
编辑:.npmrc如果您只使用一个注册表,也可以使用没有作用域的文件:
echo -n 'PASSWORD' | base64
Run Code Online (Sandbox Code Playgroud)
tho*_*ows -4
您只需正常登录即可,无需输入“@”。不幸的是,在 npm 上很难找到这些信息。当你发布包的时候就需要使用@符号。
如果这是针对公共组织的,例如我有一个组织名称“@seatbelt”,那么我发布的包名称是“@seatbelt/core”。通过输入“npm install @seatbelt/core”来安装该软件包。
如果这只是为了您个人发布私有包,您可以使用“@username/project-name”格式发布私有包名称。与上面的示例一样,发布后,您可以通过执行“npm install @username/project-name”来安装包
更多信息可以在https://docs.npmjs.com/private-modules/intro找到
| 归档时间: |
|
| 查看次数: |
3965 次 |
| 最近记录: |