本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置并使用 Yarn CodeArtifact
创建存储库后,您可以使用 Yarn 客户端来管理 npm 程序包。
注意
Yarn 1.X 会读取和使用 npm 配置文件 (.npmrc) 中的信息,但 Yarn 2.X 不会。Yarn 2.X 的配置必须在.yarnrc.yml 文件中定义。
使用 aw s codeartifaction 登录命令配置 Yarn 1.X
对于Yarn 1.X,您可以使用aws codeartifact login命令配置 Yarn。 CodeArtifact 该login命令将使用您的存储库端点信息和凭据配置您的 ~/.npmrc 文件。 CodeArtifact 在 Yarn 1.X 中,yarn 命令使用 ~/.npmrc 文件中的配置信息。
使用登录命令配置 Yarn 1.X
如果您尚未执行此操作,请按照中所述配置您的 AWS 凭据以 AWS CLI与一起使用入门 CodeArtifact。
要成功运行
aws codeartifact login命令,必须安装 npm。有关安装说明,请参阅 npm 文档中的下载 Node.js 和安装以及 npm。 使用
aws codeartifact login命令获取 CodeArtifact 凭据并配置您的 ~/.npmrc 文件。my_domain用您的 CodeArtifact 域名替换。111122223333替换为域名所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括--domain-owner。有关更多信息,请参阅 Cross-account 域名。my_repo替换为您的 CodeArtifact 存储库名称。
aws codeartifact login --tool npm --domainmy_domain--domain-owner111122223333--repositorymy_repologin命令对 ~/.npmrc 文件进行以下更改:-
CodeArtifact 使用您的 AWS 凭证获取授权令牌后,添加授权令牌。
-
将 npm 注册表设置为通过
--repository选项指定的存储库。 -
对于 npm 6 及更低版本:添加
"always-auth=true",为每个 npm 命令发送授权令牌。
调用
login后的默认授权期为 12 小时,且必须调用login来定期刷新令牌。有关使用login命令创建的授权令牌的更多信息,请参阅 使用登录命令创建的令牌。-
对于 npm 7 及更高版本,你必须添加
always-auth=true到 ~/.npmrc 文件中才能使用 Yarn。注意
如果没有
always-auth=true,Yarn 1.X 仅为限定范围的包请求发送身份验证凭证(例如,@scope/package)。由于 Yarn 不包含授权标头,因此请求无作用域的软件包(例如lodash)将失败,并显示 401 未经过身份验证的错误。在文本编辑器中打开 ~/.npmrc 文件并在新行中添加
always-auth=true。
您可以使用 yarn config list 命令来检查 Yarn 是否使用了正确的配置。运行命令后,请检查 info npm
config 部分中的值。其内容看起来类似于以下代码段。
info npm config { registry: 'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/', '//my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:_authToken': 'eyJ2ZXI...', 'always-auth': true }
使用 yarn 配置集命令配置 Yarn 2.X
以下程序详细说明了如何使用 yarn config set 命令从命令行更新 .yarnrc.yml 配置,从而配置 Yarn 2.X。
从命令行更新 yarnrc.yml 配置
如果您尚未执行此操作,请按照中所述配置您的 AWS 凭据以 AWS CLI与一起使用入门 CodeArtifact。
使用
aws codeartifact get-repository-endpoint命令获取 CodeArtifact 仓库的终端节点。my_domain用您的 CodeArtifact 域名替换。111122223333替换为域名所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括--domain-owner。有关更多信息,请参阅 Cross-account 域名。my_repo替换为您的 CodeArtifact 存储库名称。
aws codeartifact get-repository-endpoint --domainmy_domain--domain-owner111122223333--repositorymy_repo--format npm使用存储库端点更新 .yarnrc.yml 文件中的
npmRegistryServer值。yarn config set npmRegistryServer "https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/"获取 CodeArtifact 授权令牌并将其存储在环境变量中。
注意
以下命令适用于 macOS 或 Linux 计算机。有关在 Windows 计算机上配置环境变量的信息,请参阅使用环境变量传递身份验证令牌。
my_domain用您的 CodeArtifact 域名替换。111122223333替换为域名所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括--domain-owner。有关更多信息,请参阅 Cross-account 域名。my_repo替换为您的 CodeArtifact 存储库名称。
export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domainmy_domain--domain-owner111122223333--query authorizationToken --output text`-
使用
yarn config set命令将您的 CodeArtifact 身份验证令牌添加到.yarnrc.yml 文件中。将以下命令中的 URL 替换为步骤 2 中的存储库端点 URL。yarn config set 'npmRegistries["https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/"].npmAuthToken' "${CODEARTIFACT_AUTH_TOKEN}" -
使用
yarn config set命令将npmAlwaysAuth的值设置为true。将以下命令中的 URL 替换为步骤 2 中的存储库端点 URL。yarn config set 'npmRegistries["https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/"].npmAlwaysAuth' "true"
配置完成后,.yarnrc.yml 配置文件的内容应与以下代码段类似。
npmRegistries: "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/": npmAlwaysAuth: true npmAuthToken: eyJ2ZXI... npmRegistryServer: "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/"
您也可以使用 yarn config 命令来检查 npmRegistries 和 npmRegistryServer 的值。