在 CodeArtifact 中配置和使用 Yarn - CodeArtifact

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 CodeArtifact 中配置和使用 Yarn

创建存储库后,您可以使用 Yarn 客户端来管理 npm 程序包。

注意

Yarn 1.X 会读取和使用 npm 配置文件 (.npmrc) 中的信息,但 Yarn 2.X 不会。Yarn 2.X 的配置必须在.yarnrc.yml 文件中定义。

使用 aws codeartifact login 命令配置 Yarn 1.X

对于 Yarn 1.X,您可以使用 aws codeartifact login 命令在 CodeArtifact 中配置 Yarn。login 命令将使用您的 CodeArtifact 存储库端点信息和凭证配置 ~/.npmrc 文件。在 Yarn 1.X 中,yarn 命令使用 ~/.npmrc 文件中的配置信息。

使用 login 命令配置 Yarn 1.X
  1. 如果尚未配置要与 AWS CLI 一起使用的 AWS 凭证,请先配置凭证,如 开始使用 CodeArtifact中所述。

  2. 要成功运行 aws codeartifact login 命令,必须安装 npm。有关安装说明,请参阅 npm 文档中的下载和安装 Node.js 和 npm

  3. 使用 aws codeartifact login 命令提取 CodeArtifact 凭证并配置您的 ~/.npmrc 文件。

    • my_domain 替换为您的 CodeArtifact 域名。

    • 111122223333 替换为域所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括 --domain-owner。有关更多信息,请参阅跨账户域

    • my_repo 替换为您的 CodeArtifact 存储库名称。

    aws codeartifact login --tool npm --domain my_domain --domain-owner 111122223333 --repository my_repo

    login 命令对 ~/.npmrc 文件进行以下更改:

    • 使用 AWS 凭证从 CodeArtifact 获取授权令牌后添加授权令牌。

    • 将 npm 注册表设置为通过 --repository 选项指定的存储库。

    • 对于 npm 6 及更低版本:添加 "always-auth=true",为每个 npm 命令发送授权令牌。

    调用 login 后的默认授权期为 12 小时,且必须调用 login 来定期刷新令牌。有关使用 login 命令创建的授权令牌的更多信息,请参阅使用 login 命令创建的令牌

  4. 对于 npm 7.X 和 8.X,必须将 always-auth=true 添加到 ~/.npmrc 文件中才能使用 Yarn。

    1. 在文本编辑器中打开 ~/.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 config set 命令配置 Yarn 2.X

以下程序详细说明了如何使用 yarn config set 命令从命令行更新 .yarnrc.yml 配置,从而配置 Yarn 2.X

从命令行更新 yarnrc.yml 配置
  1. 如果尚未配置要与 AWS CLI 一起使用的 AWS 凭证,请先配置凭证,如 开始使用 CodeArtifact中所述。

  2. 使用 aws codeartifact get-repository-endpoint 命令来获取 CodeArtifact 存储库的端点。

    • my_domain 替换为您的 CodeArtifact 域名。

    • 111122223333 替换为域所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括 --domain-owner。有关更多信息,请参阅跨账户域

    • my_repo 替换为您的 CodeArtifact 存储库名称。

    aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm
  3. 使用存储库端点更新 .yarnrc.yml 文件中的 npmRegistryServer 值。

    yarn config set npmRegistryServer "https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/"
  4. 提取 CodeArtifact 授权令牌并将其存储在环境变量中。

    注意

    以下命令适用于 macOS 或 Linux 计算机。有关在 Windows 计算机上配置环境变量的信息,请参阅使用环境变量传递身份验证令牌

    • my_domain 替换为您的 CodeArtifact 域名。

    • 111122223333 替换为域所有者的 AWS 账户 ID。如果您要访问您拥有的域中的存储库,则无需包括 --domain-owner。有关更多信息,请参阅跨账户域

    • my_repo 替换为您的 CodeArtifact 存储库名称。

    export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
  5. 使用 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}"
  6. 使用 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 命令来检查 npmRegistriesnpmRegistryServer 的值。