如何在Mac上将NPM连接到Azure Artifacts Feed?

bvjxkvbb  于 2022-12-13  发布在  Mac
关注(0)|答案(3)|浏览(194)

我试图从Mac连接到我的私人npm饲料。我从 * 连接到饲料 * 菜单生成凭据,他们看起来像这样:

; begin auth token
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:username=ANYTHING-BUT-EMPTY
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:_password=BASE64-ENCODED-PAT-GOES-HERE
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/:username=ANYTHING-BUT-EMPTY
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/:_password=BASE64-ENCODED-PAT-GOES-HERE
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token

我把它放在我的项目中的.npmrc文件中,它没有工作。当我试图做npm安装我得到这个错误:

code E401
npm ERR! Unable to authenticate, need: Bearer authorization_uri=https://login.windows.net/...,
Basic realm="https://pkgsprodsu3weu.app.pkgs.visualstudio.com/", TFS-Federated

我也把这些凭证放在$HOME目录中,这也没有解决这个问题。我做错了什么?它们应该在哪个.npmrc文件中?我应该运行额外的命令来使用它们吗?

8wigbo56

8wigbo561#

如何在Mac上将NPM连接到Azure Artifacts Feed?
包含凭据的.npmrc文件应设置在$home目录中。
检查文档Use npm to store JavaScript packages in Azure DevOps Services or TFS
在您的开发机器上,您在$home(Linux或Mac系统)或$env.HOME(Windows系统)中还有一个.npmrc文件。这个.npmrc文件应该包含您需要连接到的所有注册表的凭据。npm客户端将查看您的项目的.npmrc文件,发现注册表,并从$home/.npmrc或$env.HOME/. npmrc中获取匹配的凭据。下一节将讨论凭据获取。
由于它仍然不为您工作,您可以检查您的npmrc令牌是否已过期。在您的.npmrc中,我发现您正在使用BASE64-ENCODED-PAT-GOES-HERE,似乎您正在使用PAT,但在
90天令牌中键入
.npmrc文件应该如下所示:

//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:username=ANYTHING-BUT-EMPTY
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:_password=BASE64-ENCODED-PAT-GOES-HERE
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:email=YOUREMAIL@EXAMPLE.COM
//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:always-auth=true

选中创建持续时间超过90天的令牌。
如果仍然出现401错误,请检查PAT是否已过期,并转换为Base64 Stringdo not have enough permission
希望这对你有帮助。

wlzqhblo

wlzqhblo2#

在我的例子中,出于某种原因,我需要用双引号和方括号包围base 64编码的令牌,使其工作。

//pkgs.dev.azure.com/<yourorganization>/_packaging/<yourfeed>/npm/registry/:_password="[BASE64-ENCODED-PAT-GOES-HERE]"

请注意:“[和结尾处]"。
加上这些之后,一切都很好。
我运行的是MacOS Big Sur 11.6

uqzxnwby

uqzxnwby3#

为了能够在不保存凭据的情况下连接到ADO npm源,可以在ADO中获取访问令牌,并将其作为参数传递给以下脚本:
setup-npmrc-feed-auth.bash

#!/bin/bash
DecodedPat=$1
NPMAuthIdent=$(echo -ne "$DecodedPat" | base64);

pnpm config set registry https://pkgs.dev.azure.com/{orgName}/{projectName}/_packaging/{feedName}/npm/registry/ --location=global

pnpm config set //pkgs.dev.azure.com/{orgName}/{projectName}/_packaging/{feedName}/npm/registry/:username {orgName} --location=global
pnpm config set //pkgs.dev.azure.com/{orgName}/{projectName}/_packaging/{feedName}/npm/registry/:_password $NPMAuthIdent --location=global
pnpm config set //pkgs.dev.azure.com/{orgName}/{projectName}/_packaging/{feedName}/npm/registry/:email some@email.com --location=global
pnpm config set //pkgs.dev.azure.com/{orgName}/{projectName}/_packaging/{feedName}/npm/:username {orgName} --location=global
pnpm config set //pkgs.dev.azure.com/{orgName}/{projectName}/_packaging/{feedName}/npm/:_password $NPMAuthIdent --location=global
pnpm config set //pkgs.dev.azure.com/{orgName}/{projectName}/_packaging/{feedName}/npm/:email some@email.com --location=global

在您的工作区中,具有以下内容:
.npmrc

registry=https://pkgs.dev.azure.com/{orgName}/{projectName}/_packaging/{feedName}/npm/registry/

auto-install-peers=true
strict-peer-dependencies=false
always-auth=true

相关问题