发布npm包到Azure Artifacts

5

我正在尝试将一个作用域包发布到私有Azure DevOps艺术品存储中。 我按照此处的说明进行操作。 我有一个名为.npmrc的项目文件,其中包含以下条目:

@my-scope:registry=https://pkgs.dev.azure.com/my-org/_packaging/my-feed/npm/registry/
@my-scope:always-auth=true

在我的全局用户.npmrc文件中,我有以下条目:

prefix=/usr/local
strict-ssl=false
unsafe-perm=true
//registry.npmjs.org/:_authToken="my-real-token"
//pkgs.dev.azure.com/my-org/_packaging/my-feed/npm/registry/:username=${NPM_USERNAME}
//pkgs.dev.azure.com/my-org/_packaging/my-feed/npm registry/:_password="my-real-base64-token"
//pkgs.dev.azure.com/my-org/_packaging/my-feed/npm/registry/:email=${NPM_EMAIL}
//pkgs.dev.azure.com/my-org/_packaging/my-feed/npm/registry/:always-auth=true
@my-scope:registry=https://pkgs.dev.azure.com/my-org/_packaging/my-feed/npm/registry/
//pkgs.dev.azure.com/my-org/_packaging/my-feed/npm registry/:_authToken="my-real-base64-token"
cafile=${NPM_CERT_LOCATION}

当我尝试运行命令:npm publish时,会出现以下错误:
Unable to authenticate, need: Bearer authorization_uri=https://login.windows.net/some-guid, Basic realm="https://pkgsprodcus1.pkgs.visualstudio.com/", TFS-Federated

根据之前的帖子,我看到我可能需要执行npm登录。执行npm login时,我遇到了此错误:

npm verb node v6.9.2
npm verb npm  v6.8.0
npm ERR! code E400
npm ERR! 400 Bad Request - PUT https://pkgs.dev.azure.com/my-org/_packaging/my-feed/npm/registry/-/user/org.couchdb.user:my-username

我看了这篇这篇,它们似乎与问题相关。然而,它们都没有起作用。 我已经尝试过curl和curl -u命令,但是出现了以下错误:
{"$id":"1","innerException":null,"message":"TF400813: Resource not available for anonymous access. Client authentication required.","typeName":"Microsoft.TeamFoundation.Framework.Server.UnauthorizedRequestException, Microsoft.TeamFoundation.Framework.Server","typeKey":"UnauthorizedRequestException","errorCode":0,"eventId":3000}%

我也尝试使用代理和证书,但结果相同。

1个回答

3

这是有点旧的信息,不确定您是否还在困境中。对于Windows系统,您可以使用这个npm包:https://www.npmjs.com/package/vsts-npm-auth

npm install -g vsts-npm-auth
vsts-npm-auth -config path-to-your\.npmrc

以下是Azure DevOps提供的更完整文章,指导您设置、配置npmrc、进行身份验证和发布:https://learn.microsoft.com/zh-cn/azure/devops/artifacts/npm/npmrc?view=azure-devops&tabs=windows

如果您在Linux或Mac上开发,则不支持vsts-npm-auth,并建议按以下方式生成令牌以在$HOME/.npmrc中使用。连接到feed对话框将生成适当格式的令牌,您可以将其放入.npmrc文件中,并在90天后到期。

  1. 从Azure Artifacts中选择“连接到feed”。
  2. 选择npm。
  3. 选择“生成npm凭据”。将凭据复制并手动添加到用户的.npmrc文件中。对于Windows,此文件位于%USERPROFILE%\.npmrc,如果以上方法无法使用,则可以很有用。对于Linux,则在$HOME/.npmrc中。

这对我有用,我必须删除%USERPROFILE%下的.npmrc文件,然后运行npm install -g vsts-npm-auth。 - Piyush Saxena

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接