

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# CodeArtifact で Yarn を設定して使用する
<a name="npm-yarn"></a>

リポジトリを作成すると、Yarn クライアントを使用して npm パッケージを管理できます。

**注記**  
`Yarn 1.X` は npm 設定ファイル (.npmrc) から情報を読み取り、使用します。一方、`Yarn 2.X` はこれを行いません。`Yarn 2.X` の設定は .yarnrc.yml ファイルで定義する必要があります。

**Contents**
+ [`aws codeartifact login` コマンドを使用して Yarn 1.X を設定します。](#npm-yarn-configure-login)
+ [`yarn config set` コマンドを使用して Yarn 2.X を設定します。](#npm-yarn-configure-yarn-command)

## `aws codeartifact login` コマンドを使用して Yarn 1.X を設定します。
<a name="npm-yarn-configure-login"></a>

`Yarn 1.X` の場合では、`aws codeartifact login` コマンドを使用して CodeArtifact で Yarn を設定できます。`login` コマンドは、CodeArtifact リポジトリのエンドポイント情報と認証情報を使用して \~/.npmrc ファイルを設定します。`Yarn 1.X` と `yarn` コマンドは、 \~/.npmrc ファイルの設定情報を使用します。

**login コマンドを使用して `Yarn 1.X` を設定するには**

1. まだ設定していない場合は、[CodeArtifact の開始方法](getting-started.md) に記述されているように、AWS CLI で使用するための AWS 認証情報を設定します。

1. `aws codeartifact login` コマンドを正常に実行するには、npm をインストールする必要があります。インストール手順については、*npm ドキュメント* の [Node.js と npm のダウンロードとインストール](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm/) を参照してください。

1. `aws codeartifact login` コマンドを使用して CodeArtifact 認証情報を取得し、\~/.npmrc ファイルを設定します。
   + {{my\_domain}} を CodeArtifact ドメイン名で置き換えます。
   + {{111122223333}} をAWS ドメインの所有者のアカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合は、`--domain-owner` を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。
   + {{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`コマンドで作成されたトークン](tokens-authentication.md#auth-token-login)」を参照してください。

1. **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 を設定します。
<a name="npm-yarn-configure-yarn-command"></a>

次の手順は、`yarn config set` コマンドを使用して、コマンドラインから `.yarnrc.yml` 設定を更新して `Yarn 2.X` を設定する方法の詳細です。

**コマンドラインから `yarnrc.yml` 設定を更新するには**

1. まだ設定していない場合は、[CodeArtifact の開始方法](getting-started.md) に記述されているように、AWS CLI で使用するための AWS 認証情報を設定します。

1. `aws codeartifact get-repository-endpoint` コマンドを使用して、CodeArtifact リポジトリのエンドポイントを取得します。
   + {{my\_domain}} を CodeArtifact ドメイン名で置き換えます。
   + {{111122223333}} をAWS ドメインの所有者のアカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合は、`--domain-owner` を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。
   + {{my\_repo}} を CodeArtifact リポジトリ名で置き換えます。

   ```
   aws codeartifact get-repository-endpoint --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}} --format npm
   ```

1. リポジトリエンドポイントを使用して、.yarnrc.yml ファイルで `npmRegistryServer` 値を更新します。

   ```
   yarn config set npmRegistryServer "https://{{my_domain}}-{{111122223333}}.d.codeartifact.{{region}}.amazonaws.com/npm/{{my_repo}}/"
   ```

1. CodeArtifact 認可トークンを取得し、環境変数に保存します。
**注記**  
次のコードは、Linux と MacOS 用です。Windows での環境変数の設定については、「[環境変数を使用して認証トークンを渡す](tokens-authentication.md#env-var)」を参照してください。
   + {{my\_domain}} を CodeArtifact ドメイン名で置き換えます。
   + {{111122223333}} をAWS ドメインの所有者のアカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合は、`--domain-owner` を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。
   + {{my\_repo}} を CodeArtifact リポジトリ名で置き換えます。

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain {{my_domain}} --domain-owner {{111122223333}} --query authorizationToken --output text`
   ```

1. `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}"
   ```

1. `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` の値を確認することもできます。