npmAuthenticate@0 - npm 对任务运行器) v0 任务 (进行身份验证
使用此任务为存储库中的文件提供 npm
生成范围的凭据 .npmrc
。 npm
这样,以及 npm
gulp 和 Grunt 等任务运行程序就可以向专用注册表进行身份验证。
语法
# npm authenticate (for task runners) v0
# Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
inputs:
workingFile: # string. Required. .npmrc file to authenticate.
#customEndpoint: # string. Credentials for registries outside this organization/collection.
# npm Authenticate (for task runners) v0
# Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like Gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
inputs:
#workingFile: # string. .npmrc file to authenticate.
#customEndpoint: # string. Credentials for registries outside this account/collection.
输入
workingFile
- 要进行身份验证的 .npmrc 文件
string
. 必需。
指定要使用的注册表的文件路径 .npmrc
。 选择文件,而不是文件夹,例如 /packages/mypackage.npmrc
。
workingFile
- 要进行身份验证的 .npmrc 文件
string
.
指定要使用的注册表的文件路径 .npmrc
。 选择文件,而不是文件夹,例如 /packages/mypackage.npmrc
。
customEndpoint
- 此组织/集合外部的注册表的凭据
string
.
此组织或集合外部注册表的 npm 服务连接 名称的逗号分隔列表。 指定的 .npmrc
文件必须包含与服务连接对应的注册表项。 如果只需要此组织或集合中的注册表,请将此字段留空。 将自动使用生成的凭据。
customEndpoint
- 此帐户/集合之外的注册表的凭据
string
.
此组织或集合外部注册表的 npm 服务连接 名称的逗号分隔列表。 指定的 .npmrc
文件必须包含与服务连接对应的注册表项。 如果只需要此组织或集合中的注册表,请将此字段留空。 将自动使用生成的凭据。
任务控件选项
除任务输入外,所有任务都有控制选项。 有关详细信息,请参阅 控制选项和常见任务属性。
输出变量
无。
备注
使用此任务为存储库中的文件提供 npm
生成范围的凭据 .npmrc
。 npm
这样,以及 npm
gulp 和 Grunt 等任务运行程序就可以向专用注册表进行身份验证。
- 此任务的工作原理是什么?
- 应在管道中何时运行此任务?
- 我有多个 npm 项目。 是否需要为每个 .npmrc 文件运行此任务?
- 我的代理位于 Web 代理后面。 是否会
npmAuthenticate
设置为npm/gulp/Grunt
使用我的代理? - 我的管道需要访问其他项目中的源
此任务的工作原理是什么?
此任务在指定 .npmrc
文件中搜索注册表项,然后将发现的注册表的身份验证详细信息追加到文件的末尾。 对于当前组织/集合中的所有注册表,将使用生成的凭据。 对于不同组织中的注册表或由第三方托管的注册表,注册表 URI 将与输入指定的 customEndpoint
npm 服务连接的 URI 进行比较,并使用相应的凭据。 文件 .npmrc
将在管道执行结束时还原为其原始状态。
应在管道中何时运行此任务?
在使用 npm
或 npm
任务运行程序安装包或将包推送到经过身份验证的 npm 存储库(如 Azure Artifacts)之前,必须运行此任务。 没有其他订购要求。
我有多个 npm 项目。 是否需要为每个 .npmrc 文件运行此任务?
此任务一次只向一个 .npmrc
文件添加身份验证详细信息。 如果需要对多个 .npmrc
文件进行身份验证,可以多次运行任务,每个文件运行 .npmrc
一次。 或者,请考虑创建一个 .npmrc
文件来指定项目使用的所有注册表, npmAuthenticate
并在此 .npmrc
文件上运行,然后设置环境变量以将此 .npmrc
文件指定为 npm 每用户配置文件。
- task: npmAuthenticate@0
inputs:
workingFile: $(agent.tempdirectory)/.npmrc
- script: echo ##vso[task.setvariable variable=NPM_CONFIG_USERCONFIG]$(agent.tempdirectory)/.npmrc
- script: npm ci
workingDirectory: project1
- script: npm ci
workingDirectory: project2
我的代理位于 Web 代理后面。 是否会 npmAuthenticate
设置为 npm/gulp/Grunt
使用我的代理?
答案是“否”。 虽然此任务本身将在 代理配置为使用的 Web 代理后面工作,但它不会配置 npm
或 npm
任务运行器来使用代理。
为此,可以:
将环境变量
http_proxy
/https_proxy
和 (可选no_proxy
)设置为代理设置。 有关详细信息 ,请参阅 npm 配置 。 请注意,这些是其他非npm
工具 ((例如 curl) )也可以使用的常用变量。手动将代理设置添加到 npm 配置,方法是使用 npm 配置集,或通过设置前缀为 的
NPM_CONFIG_
环境变量。警告:
npm
任务运行器可能与 支持npm
的所有代理配置方法不兼容。调用
npm
时,使用命令行标志指定代理。- script: npm ci --https-proxy $(agent.proxyurl)
如果代理需要身份验证,则可能需要添加额外的生成步骤来构造经过身份验证的代理 URI。
- script: node -e "let u = url.parse(`$(agent.proxyurl)`); u.auth = `$(agent.proxyusername):$(agent.proxypassword)`; console.log(`##vso[task.setvariable variable=proxyAuthUri;issecret=true]` + url.format(u))"
- script: npm publish --https-proxy $(proxyAuthUri)
我的管道需要访问其他项目中的源
如果管道在与托管源的项目不同的项目中运行,则必须设置另一个项目以授予对生成服务的读/写访问权限。 有关更多详细信息 ,请参阅 Azure Pipelines 中的包权限 。
示例
从组织内的注册表还原 npm
项目的包
如果你使用的唯一经过身份验证的注册表是组织中的 Azure Artifacts 注册表,则只需指定任务文件npmAuthenticate
的路径.npmrc
。
.npmrc
registry=https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/npm/registry/
always-auth=true
npm
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
- script: npm ci
# ...
- script: npm publish
还原和发布 npm
组织外部的包
.npmrc
如果包含来自不同组织的 Azure Artifacts 注册表或使用第三方经过身份验证的包存储库,则需要设置 npm 服务连接并在输入中customEndpoint
指定它们。
Azure Artifacts 组织中的注册表也将自动进行身份验证。
.npmrc
registry=https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/npm/registry/
@{scope}:registry=https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
@{otherscope}:registry=https://{thirdPartyRepository}/npm/registry/
always-auth=true
指向 Azure Artifacts 源的注册表 URL 可能包含项目,也可能不包含该项目。 项目范围源的 URL 必须包含项目,组织范围的源的 URL 不得包含该项目。 详细了解 项目范围的源。
npm
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection
- script: npm ci
# ...
- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
OtherOrganizationNpmConnection
和 ThirdPartyRepositoryNpmConnection
是已配置和授权在管道中使用的 npm 服务连接 的名称,其 URL 与指定 .npmrc
文件中的 URL 匹配。