Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Azure Artifacts 使开发人员能够管理来自各种源的包,包括公共注册表(如 npmjs.com 和专用源)。 若要使用 Azure Artifacts 进行身份验证,需要配置 npmrc 配置文件。 此文件存储 npm 使用的源 URL 和凭据,并允许自定义客户端行为,例如设置代理、定义默认包位置或配置对专用源的访问。
npmrc 文件通常位于用户的主目录中,但也可在项目级别创建以替代默认设置。
先决条件
连接到源
Azure Artifacts 建议使用两个单独的 .npmrc 配置文件。 其中一个应存储在本地以存储凭据,另一个应与 package.json 一起添加到项目目录,以定义订阅源 URL。 此方法允许你共享项目级配置,而无需公开敏感信息。
若要设置凭据文件,请创建或更新 .npmrc 文件并包括所有必要的注册表凭据。 这使 npm 客户端可以轻松访问您的凭据以进行身份验证。
以下步骤将指导你设置项目级配置文件。 选择与开发环境对应的选项卡:
备注
Azure DevOps Server 不支持 vsts-npm-auth。
登录到 Azure DevOps 组织,然后导航到项目。
选择“ 项目”,然后从下拉菜单中选择源。
选择“连接到源”,然后从左侧导航窗格中选择“npm”。
将 .npmrc 添加到项目,位于 package.json 所在的目录中,并将提供的代码片段从 “项目设置 ”部分粘贴到文件中。
请运行以下命令,将 Azure Artifacts 令牌添加到您的用户级 .npmrc 文件中。 不需要每次都运行——当需要刷新令牌时,npm 将返回 401 未授权 错误。
vsts-npm-auth -config .npmrc
登录到 Azure DevOps 组织,然后导航到项目。
选择“ 项目”,然后从下拉菜单中选择源。
选择“连接到源”,然后从左侧导航窗格中选择“npm”。
将 .npmrc 文件添加到项目的目录中。 这应与 package.json 文件所在的目录相同。
将 Project 安装 部分中提供的代码片段粘贴到 .npmrc 文件中。 您的文件应看起来如下所示:
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
设置凭据
复制以下代码片段并将其粘贴到用户级 npmrc 文件中:
组织作用域的源:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
项目作用域的源:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
使用打包读取和写入作用域生成个人访问令牌。
在命令提示符窗口中运行以下命令。 出现提示时,粘贴个人访问令牌(PAT),然后按 Enter。 该脚本将返回一个 Base64 编码版本的 PAT,复制该值以在下一步中使用。
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
备注
截至 2024 年 7 月,Azure DevOps 个人访问令牌(PAT) 长度为 82 个字符。 某些工具可能会在将标记编码为 Base64 时插入自动换行符。 若要避免这种情况,请使用 -w0 命令的标志来确保输出保持在单行上。
在本教程中,我们使用 Node 的 Buffer 方法,该方法默认生成单行 Base64 字符串。
如果使用 Linux 或 macOS,可以在终端中运行以下命令,将个人访问令牌(PAT)转换为 Base64 编码的字符串。 复制要在下一步中使用的结果值。
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64 -w0
将用户级 npmrc 文件中的占位符 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] 替换为在上一步中生成的 Base64 编码的个人访问令牌。
登录到 Azure DevOps 集合,然后导航到项目。
选择“Artifacts”,从下拉菜单中选择源,然后选择“连接到源”。
从左侧选择 npm ,然后按照 “项目设置 ”部分中的步骤配置 npmrc 文件并使用源进行身份验证。
登录到 Azure DevOps 集合,然后导航到项目。
选择“ 项目”,然后从下拉菜单中选择源。
选择“连接到源”,然后从左侧导航窗格中选择“npm”。
在项目的目录中、package.json 文件所在的同一目录中添加 .npmrc 文件,并将 Project 安装程序部分中提供的代码片段粘贴到 npmrc 文件中。 您的文件应看起来如下所示:
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
设置凭据
复制以下代码片段并将其粘贴到用户级 .npmrc 文件中:
集合作用域的源:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
项目作用域的源:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
使用打包读取和写入作用域生成个人访问令牌。
在命令提示符窗口中运行以下命令。 出现提示时,粘贴个人访问令牌,然后按 Enter。 该脚本将返回一个 Base64 编码版本的 PAT,复制该值以在下一步中使用。
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
备注
截至 2024 年 7 月,Azure DevOps 个人访问令牌(PAT) 长度为 82 个字符。 某些工具可能会在将标记编码为 Base64 时插入自动换行符。 若要避免这种情况,请使用 -w0 命令的标志来确保输出保持在单行上。
在本教程中,我们使用 Node 的 Buffer 方法,该方法默认生成单行 Base64 字符串。
将用户级 .npmrc 文件中的占位符 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] 替换为在上一步中生成的 Base64 编码的个人访问令牌。
登录到 Azure DevOps 集合,然后导航到项目。
选择工件,然后选择连接到源。
从左侧选择 npm ,然后按照 “项目设置 ”部分中的步骤配置 .npmrc。 提交并使用源进行身份验证。
登录到 Azure DevOps 集合,然后导航到项目。
选择“ 项目”,然后从下拉菜单中选择源。
选择“连接到源”,然后从左侧导航窗格中选择“npm”。
在项目的目录中、package.json 文件所在的同一目录中添加 .npmrc 文件,并将 Project 安装程序部分中提供的代码片段粘贴到 npmrc 文件中。 您的文件应看起来如下所示:
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
备注
对于 Debian、Ubuntu 和其他社区或企业分发版(例如 Fedora 或 Redhat),请确保已安装 NodeSource 分发存储库中的先决条件。
设置凭据
复制以下代码片段并将其粘贴到用户级 .npmrc 文件中:
集合作用域的源:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
项目作用域的源:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
使用打包读取和写入作用域生成个人访问令牌。
在命令提示符窗口中运行以下命令。 出现提示时,粘贴个人访问令牌,然后按 Enter。 该脚本将返回一个 Base64 编码版本的 PAT,复制该值以在下一步中使用。
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
备注
截至 2024 年 7 月,Azure DevOps 个人访问令牌(PAT) 长度为 82 个字符。 某些工具可能会在将标记编码为 Base64 时插入自动换行符。 若要避免这种情况,请使用 -w0 命令的标志来确保输出保持在单行上。
在本教程中,我们使用 Node 的 Buffer 方法,该方法默认生成单行 Base64 字符串。
将用户级 .npmrc 文件中的占位符 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] 替换为在上一步中生成的 Base64 编码的个人访问令牌。
提示
.npmrc 文件中支持通过作用域和上游源来使用多个注册表。
相关内容