View a markdown version of this page

配置并使用 Yarn CodeArtifact - CodeArtifact

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

配置并使用 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
  1. 如果您尚未执行此操作,请按照中所述配置您的 AWS 凭据以 AWS CLI与一起使用入门 CodeArtifact

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

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

    • my_domain用您的 CodeArtifact 域名替换。

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

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

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

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

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

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

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

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

  4. 对于 npm 7 及更高版本,你必须添加always-auth=true到 ~/.npmrc 文件中才能使用 Yarn。

    注意

    如果没有always-auth=true,Yarn 1.X 仅为限定范围的包请求发送身份验证凭证(例如,@scope/package)。由于 Yarn 不包含授权标头,因此请求无作用域的软件包(例如lodash)将失败,并显示 401 未经过身份验证的错误。

    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 配置集命令配置 Yarn 2.X

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

从命令行更新 yarnrc.yml 配置
  1. 如果您尚未执行此操作,请按照中所述配置您的 AWS 凭据以 AWS CLI与一起使用入门 CodeArtifact

  2. 使用aws codeartifact get-repository-endpoint命令获取 CodeArtifact 仓库的终端节点。

    • my_domain用您的 CodeArtifact 域名替换。

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

    • 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。有关更多信息,请参阅 Cross-account 域名

    • 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 的值。