

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

# CodeArtifactをnpmで使用する
<a name="using-npm"></a>

以下のトピックでは、Node.js パッケージマネージャーnpmをCodeArtifactで使用する方法について説明します。

**注記**  
CodeArtifactは、`node v4.9.1`およびそれ以降、`npm v5.0.0`およびそれ以降に対応します。

**Topics**
+ [npm の設定と使用](npm-auth.md)
+ [Yarn の設定と使用](npm-yarn.md)
+ [npm コマンドサポート](npm-commands.md)
+ [npm タグ処理](npm-tags.md)
+ [npm 互換パッケージマネージャーのサポート](npm-other-clients.md)

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

CodeArtifact でリポジトリを作成したら、npm クライアントを使用してパッケージをインストールして公開できます。リポジトリエンドポイントと認可トークンで npm を設定するための推奨される方法は、`aws codeartifact login` コマンドの使用です。npm を手動で設定することもできます。

**Contents**
+ [login コマンドを使用した npm の設定](#configure-npm-login-command)
+ [login コマンドを使用せずに npm を設定する](#configuring-npm-without-using-the-login-command)
+ [npm コマンドを実行する](#running-npm-commands)
+ [npm の認証と認可の検証](#verifying-npm-authentication-and-authorization)
+ [デフォルトの npm レジストリに戻す](#revert-default-npm-registry)
+ [npm 8.x 以降でのインストールが遅い場合のトラブルシューティング](#troubleshooting-slow-npm-install)

## login コマンドを使用した npm の設定
<a name="configure-npm-login-command"></a>

`aws codeartifact login` コマンドを使用して、npm で使用する認証情報を取得します。

**注記**  
所有しているドメインのリポジトリにアクセスする場合は、`--domain-owner` を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。

**重要**  
npm 10.x 以降を使用している場合は、 AWS CLI バージョン 2.9.5 以降を使用して`aws codeartifact login`コマンドを正常に実行する必要があります。

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

このコマンドは、 \$1/.npmrc ファイルに次の変更を加えます:
+  AWS 認証情報を使用して CodeArtifact から認可トークンを取得し、追加します。
+ npm レジストリを、`--repository` オプションで指定されたリポジトリに設定します。
+ **npm 6 以下の場合:** `"always-auth=true"` を追加すると、認可トークンがすべての npm コマンドに対して送信されます。

`login` を呼び出した後のデフォルトの認可時間は 12 時間であり、トークンを定期的に更新するには、`login` を呼び出す必要があります。`login` コマンドで作成される認可トークンの詳細については、「[`login`コマンドで作成されたトークン](tokens-authentication.md#auth-token-login)」を参照してください。

## login コマンドを使用せずに npm を設定する
<a name="configuring-npm-without-using-the-login-command"></a>

`aws codeartifact login` コマンドを使用せずに CodeArtifact リポジトリで npm を設定するには、npm 設定を手動で更新します。

**login コマンドを使用せずに npm を設定するには**

1. コマンドラインで、CodeArtifact 認可トークンを取得し、環境変数に保存します。npm はこのトークンを使用して CodeArtifact リポジトリで認証します。
**注記**  
次のコマンドは、macOS または Linux 用です。Windows での環境変数の設定については、「[環境変数を使用して認証トークンを渡す](tokens-authentication.md#env-var)」を参照してください。

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

1. 次のコマンドを実行して、CodeArtifact リポジトリのエンドポイントを取得します。リポジトリエンドポイントは、パッケージをインストールまたは公開するために npm をリポジトリに指すために使用されます。
   + *my\$1domain* を CodeArtifact ドメイン名で置き換えます。
   + *111122223333* をドメイン所有者の AWS アカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合、`--domain-owner`を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。
   + *my\$1repo* を CodeArtifact リポジトリ名で置き換えます。

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

   次の URL は、リポジトリエンドポイントの例です。

   ```
   https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/
   ```
**重要**  
レジストリ URL はスラッシュ (/) で終わる必要があります。そうしないと、リポジトリに接続することはできません。

1. `npm config set`コマンドを使用して、CodeArtifact リポジトリにレジストリを設定します。URL を、前のステップのリポジトリエンドポイントの URL に置き換えます。

   ```
   npm config set registry=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/
   ```
**注記**  
デュアルスタックエンドポイントを使用するには、`codeartifact.region.on.aws` エンドポイントを使用してください。

1. `npm config set` コマンドを使用して、npm 設定に認可トークンを追加します。

   ```
   npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:_authToken=$CODEARTIFACT_AUTH_TOKEN
   ```

   **npm 6 以下の場合:** npm に常に認証トークンを CodeArtifact に渡すようにするには、`GET` リクエストの場合は、`npm config set` で `always-auth` 設定変数を設定します。

   ```
   npm config set //my_domain-111122223333.d.codeartifact.region.amazonaws.com/npm/my_repo/:always-auth=true
   ```

**構成ファイルの例 (`.npmrc`)**

 次に `.npmrc` ファイルの例を示します。CodeArtifact レジストリエンドポイントを設定するための先の指示に従った後、認証トークンを追加し、`always-auth` を設定します。

```
registry=https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my-cli-repo/
//my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:_authToken=eyJ2ZX...
//my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:always-auth=true
```

## npm コマンドを実行する
<a name="running-npm-commands"></a>

npm クライアントを設定したら、npm コマンドを実行できます。パッケージがリポジトリまたはその上流のリポジトリの1つに存在すると仮定すると、パッケージを `npm install` でインストールできます。例えば、以下を使用して `lodash` パッケージをインストールします。

```
npm install lodash
```

次のコマンドを使用して、新しい npm パッケージを CodeArtifact リポジトリに公開します。

```
npm publish
```

npm パッケージを作成する方法については、npm ドキュメントウェブサイト[ 上の Node.js モジュールの作成](https://docs.npmjs.com/getting-started/creating-node-modules) を参照してください。CodeArtifact でサポートされる npm コマンドのリストについては、[npm コマンドのサポート](npm-commands.md) を参照してください。

## npm の認証と認可の検証
<a name="verifying-npm-authentication-and-authorization"></a>

`npm ping` コマンドの呼び出しは、次のことを検証する方法です。
+ CodeArtifact リポジトリに対して認証できるように、認証情報が正しく設定されました。
+ 認可設定により、`ReadFromRepository` アクセス許可が与えられます。

`npm ping` の正常な呼び出しからの出力は次のようになります。

```
$ npm -d ping
npm info it worked if it ends with ok
npm info using npm@6.4.1
npm info using node@v9.5.0
npm info attempt registry request try #1 at 4:30:59 PM
npm http request GET https://<domain>.d.codeartifact.us-west-2.amazonaws.com/npm/shared/-/ping?write=true
npm http 200 https:///npm/shared/-/ping?write=true
Ping success: {}
npm timing npm Completed in 716ms
npm info ok
```

`-d` オプションを指定すると、npm はリポジトリ URL を含む追加のデバッグ情報を出力します。この情報により、npm が期待するリポジトリを使用するように設定されていることを簡単に確認できます。

## デフォルトの npm レジストリに戻す
<a name="revert-default-npm-registry"></a>

npm を CodeArtifact で設定すると、npm レジストリが指定された CodeArtifact リポジトリに設定されます。次のコマンドを実行すると、CodeArtifact への接続が完了したら、npm レジストリをデフォルトのレジストリに戻すことができます。

```
npm config set registry https://registry.npmjs.com/
```

## npm 8.x 以降でのインストールが遅い場合のトラブルシューティング
<a name="troubleshooting-slow-npm-install"></a>

npm バージョン8.x 以降には既知の問題があります。パッケージリポジトリに対してリクエストが行われ、リポジトリがアセットを直接ストリーミングする代わりにクライアントを Amazon S3 にリダイレクトすると、npm クライアントが依存関係ごとに数分間ハングアップする可能性があります。

CodeArtifact リポジトリはリクエストを常に Amazon S3 にリダイレクトするように設計されているため、この問題が発生することがあり、npm のインストール時間が長くなるため、ビルド時間が長くなります。この動作が発生すると、進行状況バーが数分間表示されます。

この問題を回避するには、次の例のように `npm` CLI コマンドで `--no-progress` または `progress=false` フラグを使用します。

```
npm install lodash --no-progress
```

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

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

   `login`コマンドを使用すると、\$1/.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` を\$1/.npmrc ファイルに追加して Yarn を使用する必要があります。

   1. \$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\$1domain* を CodeArtifact ドメイン名で置き換えます。
   + *111122223333* をAWS ドメインの所有者のアカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合は、`--domain-owner` を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。
   + *my\$1repo* を 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\$1domain* を CodeArtifact ドメイン名で置き換えます。
   + *111122223333* をAWS ドメインの所有者のアカウント ID に置き換えます。所有しているドメインのリポジトリにアクセスする場合は、`--domain-owner` を含める必要はありません。詳細については、「[クロスアカウントドメイン](domain-overview.md#domain-overview-cross-account)」を参照してください。
   + *my\$1repo* を 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` の値を確認することもできます。

# npm コマンドサポート
<a name="npm-commands"></a>

以下のセクションでは、CodeArtifact リポジトリでサポートされている npm コマンドと、サポートされていない特定のコマンドについてまとめます。

**Contents**
+ [リポジトリと対話するサポートされているコマンド](#supported-commands-that-interact-with-a-repository)
+ [サポートされているクライアント側のコマンド](#supported-client-side-commands)
+ [サポートされていないコマンド](#unsupported-commands)

## リポジトリと対話するサポートされているコマンド
<a name="supported-commands-that-interact-with-a-repository"></a>

このセクションでは、npm クライアントが設定されているレジストリに対して 1 つ以上の要求を行う npm コマンドの一覧を示します (例えば、`npm config set registry`)。これらのコマンドは、CodeArtifact リポジトリに対して呼び出されたときに正しく機能することが確認されています。


****  

| コマンド | 説明 | 
| --- | --- | 
|   [bugs](https://docs.npmjs.com/cli/bugs) (バグ)   |  パッケージのバグトラッカー URL の場所を推測し、開こうとします。  | 
|   [ci](https://docs.npmjs.com/cli/ci) (クリーンスレートインストール)   |  クリーンスレートでプロジェクトをインストールします。  | 
|   [deprecate](https://docs.npmjs.com/cli/deprecate) (非推奨)   |  パッケージのバージョンを非推奨にします。  | 
|   [dist-tag](https://docs.npmjs.com/cli/dist-tag) (配布タグ)   |  パッケージ配布タグを変更します。  | 
|   [docs](https://docs.npmjs.com/cli/docs) (ドキュメンテーション)   |  パッケージのドキュメンテーション URL の場所を推測し、`--browser`　config　パラメータを使用してそれを開こうとします。  | 
|   [doctor](https://docs.npmjs.com/cli/doctor) (ドクター)   |  一連のチェックを実行して、npm インストールに JavaScript パッケージを管理するために必要なものがあることを確認します。  | 
|   [install](https://docs.npmjs.com/cli/install) (インストール)   |  パッケージをインストールします。  | 
|   [install-ci-test](https://docs.npmjs.com/cli/install-ci-test) (クリーンスレートインストールのテスト)   |  クリーンスレートでプロジェクトをインストールし、テストを実行します。エイリアス: `npm cit` このコマンドは、`npm ci` の直後に `npm test` を実行します。  | 
|   [install-test](https://docs.npmjs.com/cli/install-test) (インストールテスト)   |  パッケージをインストールしてテストを実行します。`npm install` の直後に `npm test` を実行します。  | 
|   [outdated](https://docs.npmjs.com/cli/outdated) (旧式)   |  設定されたレジストリをチェックして、インストールされているパッケージが現在古いかどうかを確認します。  | 
|   [ping](https://docs.npmjs.com/cli/ping) (旧式)   |  設定または指定された npm レジストリに ping を実行し、認証を検証します。  | 
|   [publish](https://docs.npmjs.com/cli/publish) (出力)   |  パッケージバージョンをレジストリに出力します。  | 
|   [update](https://docs.npmjs.com/cli/update) (アップデート)   |  パッケージのリポジトリ URL の場所を推測し、`--browser` config パラメータを使用してそれを開こうとします。  | 
|   [view](https://docs.npmjs.com/cli/view) (表示)   |  パッケージメタデータの表示 メタデータプロパティを印刷するために使用できます。  | 

## サポートされているクライアント側のコマンド
<a name="supported-client-side-commands"></a>

これらのコマンドはリポジトリとの直接的なやりとりを必要としないため、CodeArtifactはそのサポートのために何もする必要はありません。


****  

| コマンド | 説明 | 
| --- | --- | 
|   [buid](https://docs.npmjs.com/cli/v6/commands/npm-build) (構築)   |  パッケージを構築します。  | 
|   [cache](https://docs.npmjs.com/cli/cache) (キャッシュ)   |  パッケージキャッシュを操作します。  | 
|   [completion](https://docs.npmjs.com/cli/completion) (完成)   |  すべての npm コマンドでタブ補完を有効にします。  | 
|   [config](https://docs.npmjs.com/cli/config) (設定)   |  ユーザーとグローバル `npmrc` ファイルのコンテンツを更新します。  | 
|   [depute](https://docs.npmjs.com/cli/dedupe) (代理)   |  ローカルパッケージツリーを検索し、依存関係をツリー上に移動して構造を単純化しようとします。依存関係は複数の依存パッケージによってより効果的に共有できます。  | 
|   [edit](https://docs.npmjs.com/cli/edit) (編集)   |  インストールされたパッケージを編集します。現在作業中のディレクトリ内の依存関係を選択し、パッケージフォルダをデフォルトエディタで開きます。  | 
|   [explore](https://docs.npmjs.com/cli/explore) (調査)   |  インストールされているパッケージを参照します。指定されたインストール済みパッケージのディレクトリにサブシェルをスポーンします。コマンドが指定されている場合はサブシェルで実行され、すぐに終了します。  | 
|   [help](https://docs.npmjs.com/cli/help) (ヘルプ)   |  npm に関するヘルプを取得します。  | 
|   [help-search](https://docs.npmjs.com/cli/help-search) (ヘルプ検索)   |  npm ヘルプドキュメントを検索します。  | 
|   [init](https://docs.npmjs.com/cli/init) (初期)   |  `package.json` ファイルを作成します。  | 
|   [link](https://docs.npmjs.com/cli/link) (リンク)   |  パッケージフォルダをシンボリックリンクします。  | 
|   [ls](https://docs.npmjs.com/cli/ls) (リスト)   |  インストールされているパッケージを一覧表示します。  | 
|   [pack](https://docs.npmjs.com/cli/pack) (パッケージ)   |  パッケージから tarball を作成します。  | 
|   [prefix](https://docs.npmjs.com/cli/prefix) (プレフィックス)   |  プレフィックスを表示します。これは、`-g` も指定されていない限り、`package.json` ファイルを格納する最も近い親ディレクトリです。  | 
|   [prune](https://docs.npmjs.com/cli/prune) (削除)   |  親パッケージの依存関係リストに一覧表示されていないパッケージを削除します。  | 
|   [rebuild](https://docs.npmjs.com/cli/rebuild) (再構築)   |  一致したフォルダに対して `npm build` コマンドを実行します。  | 
|   [restart](https://docs.npmjs.com/cli/restart) (再起動)   |  パッケージの停止、再起動、開始スクリプト、および関連する前後のスクリプトを実行します。  | 
|   [root](https://docs.npmjs.com/cli/root) (ルート)   |  効果的な `node_modules` フォルダをデフォルト出力に印刷します。  | 
|   [run-script](https://docs.npmjs.com/cli/run-script) (スクリプト実行)   |  任意のパッケージスクリプトを実行します。  | 
|   [shrinkwrap](https://docs.npmjs.com/cli/shrinkwrap) (収縮包装)   |  パブリケーションの依存関係バージョンをロックダウンします。  | 
|   [uninstall](https://docs.npmjs.com/cli/uninstall) (アンインストール)   |  パッケージをアンインストールします。  | 

## サポートされていないコマンド
<a name="unsupported-commands"></a>

これらの npm コマンドは、CodeArtifact リポジトリではサポートされていません。


****  

| コマンド | 説明 | 注意事項 | 
| --- | --- | --- | 
|   [access](https://docs.npmjs.com/cli/access) (アクセス)   |  公開パッケージのアクセスレベルを設定します。  |  CodeArtifact は、パブリック npmjs リポジトリとは異なるアクセス許可モデルを使用します。  | 
|   [adduser](https://docs.npmjs.com/cli/adduser)   |  レジストリユーザーアカウントを追加します。  |  CodeArtifact は、パブリック npmjs リポジトリとは異なるユーザーモデルを使用します。  | 
|   [audit](https://docs.npmjs.com/cli/audit) (監査)   |  セキュリティ監査を実行します。  |  CodeArtifact は現在、セキュリティ脆弱性データを提供していません。  | 
|   [hook](https://docs.npmjs.com/cli/hook) (フック)   |  追加、削除、リスト、更新など、npm フックを管理します。  |  CodeArtifact は現在、いかなる種類の変更通知メカニズムもサポートしていません。  | 
|   [login](https://docs.npmjs.com/cli-commands/adduser.html) (ログイン)   |  ユーザーを認証します。これは `npm adduser` のエイリアスです。  |  CodeArtifact は、公開 npmjs リポジトリとは異なる認証モデルを使用します。詳細については、[npm の認証](npm-auth.md) を参照してください。  | 
|   [logout](https://docs.npmjs.com/cli/logout) (サインアウト)   |  レジストリからサインアウトします。  |  CodeArtifact は、パブリック npmjs リポジトリとは異なる認証モデルを使用します。CodeArtifact リポジトリからサインアウトする方法はありませんが、認証トークンは、設定可能な有効期限後に期限切れになります。デフォルトのトークンの期間は 12 時間です。  | 
|   [owner](https://docs.npmjs.com/cli/owner) (オーナー)   |  パッケージの所有者を管理します。  |  CodeArtifact は、公開 npmjs リポジトリとは異なるアクセス許可モデルを使用します。  | 
|   [profile](https://docs.npmjs.com/cli/profile) (プロファイル)   |  レジストリプロファイルの設定を変更します。  |  CodeArtifact は、パブリック npmjs リポジトリとは異なるユーザーモデルを使用します。  | 
|   [search](https://docs.npmjs.com/cli/search) (検索)   |  検索語に一致するパッケージをレジストリで検索します。  |  CodeArtifact は、[list-packages](list-packages.md) コマンドを使用した限定的な検索機能をサポートしています。  | 
|   [star](https://docs.npmjs.com/cli/star) (星)   |  お気に入りのパッケージをマークします。  |  CodeArtifact は現在、いかなる種類のお気に入りメカニズムもサポートしていません。  | 
|   [stars](https://docs.npmjs.com/cli/stars) (星)   |  お気に入りとしてマークされたパッケージを表示します。  |  CodeArtifact は現在、いかなる種類のお気に入りメカニズムもサポートしていません。  | 
|   [team](https://docs.npmjs.com/cli/team) (チーム)   |  組織チームとチームメンバーシップを管理します。  |  CodeArtifact は、公開 npmjs リポジトリとは異なるユーザーおよびグループのメンバーシップモデルを使用します。詳細については、*IAM ユーザーガイド* の [アイデンティティ (ユーザー、グループ、ロール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) を参照してください。  | 
|   [token](https://docs.npmjs.com/cli/token) (トークン)   |  認証トークンを管理します。  |  CodeArtifact は、認証トークンを取得するために別のモデルを使用します。詳細については、[npm での認証](npm-auth.md) を参照してください。  | 
|   [unpublished](https://docs.npmjs.com/cli/unpublish)   |  レジストリからパッケージを削除します。  |  CodeArtifact は、npm クライアントを使用したリポジトリからの公開バージョンの削除をサポートしていません。[delete-package-version](delete-package.md) コマンドを使用できます。  | 
|   [whoami](https://docs.npmjs.com/cli/whoami) (私は誰)   |  npm ユーザー名を表示します。  |  CodeArtifact は、公開 npmjs リポジトリとは異なるユーザーモデルを使用します。  | 

# npm タグ処理
<a name="npm-tags"></a>

 npm レジストリは *タグ* をサポートしており、これはパッケージバージョンの文字列エイリアスです。タグを使用して、バージョン番号の代わりにエイリアスを指定できます。例えば、複数の開発ストリームを持つプロジェクトがあり、別のタグ (例えば、`stable`、`beta`、`dev`、`canary`) をストリームごとに使用する場合があります。詳細については、npm ウェブサイト上の [dist-tag](https://docs.npmjs.com/cli/dist-tag) を参照してください。

 デフォルトでは、npm は `latest` タグを使用して、パッケージの現在のバージョンを識別します。`npm install pkg` (`@version` または `@tag` 指定子なし) は latest タグをインストールします。通常、プロジェクトは安定版リリースバージョンに対してのみ、latest タグを使用します。他のタグは、不安定版またはプレリリースバージョンに使用されます。

## npm クライアントでタグを編集する
<a name="editing-tags-with-the-npm-client"></a>

 3 つの `npm dist-tag` コマンド (`add`、`rm` および `ls`) は、 CodeArtifact リポジトリでは、[デフォルト npm レジストリ](https://registry.npmjs.com/) 内と同様に機能します。

## npm タグと CopyPackageVersions API
<a name="tags-and-cpv"></a>

`CopyPackageVersions` API を使用してnpm パッケージバージョンをコピーすると、そのバージョンをエイリアシングするすべてのタグがコピー先リポジトリにコピーされます。コピーされるバージョンに、コピー先にも存在するタグがある場合、コピー操作によって、コピー先リポジトリ内のタグ値がコピー元リポジトリの値と一致するように設定されます。

例えば、この表に示すように、リポジトリ S とリポジトリ D の両方に、latest タグセットで `web-helper` パッケージのシングルバージョンが含まれます。


****  

| リポジトリ | パッケージ名 | パッケージタグ | 
| --- | --- | --- | 
|  S  |  `web-helper`  |   *latest* (バージョン 1.0.1 のエイリアス)  | 
|  D  |  `web-helper`  |   *latest* (バージョン 1.0.0 のエイリアス)  | 

 S から D へ `web-helper` 1.0.1 をコピーするために `CopyPackageVersions` が呼び出されます。操作が完了した後、リポジトリ D の `web-helper` 上の `latest` タグは、 1.0.0 ではなく 1.0.1 に別名を付けます。

コピー後にタグを変更する必要がある場合は、`npm dist-tag` コマンドを実行して、コピー先リポジトリ内のタグを直接変更します。`CopyPackageVersions` API の詳細については、[リポジトリ間でのパッケージのコピー](copy-package.md) を参照してください。

## npm タグと上流リポジトリ
<a name="tags-and-upstreams"></a>

npm がパッケージのタグを要求し、そのパッケージのバージョンが上流リポジトリにも存在する場合、CodeArtifact はタグをマージしてからクライアントに返します。例えば、R というリポジトリには U という上流のリポジトリがあります。次の表に、両方のリポジトリに存在する `web-helper` という名前のパッケージのタグを示します。


****  

| リポジトリ | パッケージ名 | パッケージタグ | 
| --- | --- | --- | 
|  R  |  `web-helper`  |   *latest* (バージョン 1.0.0 のエイリアス)  | 
|  U  |  `web-helper`  |   *alpha* (バージョン 1.0.1 のエイリアス)  | 

この場合、npm クライアントがリポジトリ R の `web-helper` パッケージのタグを取得すると、*latest* および *alpha* 両方の タグを取得します。タグが指すバージョンは変更されません。

同じタグが上流と下流の両方のリポジトリで同じパッケージに存在する場合、CodeArtifact は、*上流* リポジトリにあるタグを使用します。例えば、*ウェブヘルパー* 上のタグが次のように変更したとします。


****  

| リポジトリ | パッケージ名 | パッケージタグ | 
| --- | --- | --- | 
|  R  |  `web-helper`  |   *latest* (バージョン 1.0.0 のエイリアス)  | 
|  U  |  `web-helper`  |   *latest* (バージョン 1.0.1 のエイリアス)  | 

この場合、npm クライアントが、リポジトリ R からパッケージ *ウェブヘルパー* のタグを取得すると、*latest* タグはバージョン *1.0.1* に別名を付けます。これが上流のリポジトリにあるからです。これにより、`npm update` を実行して、下流リポジトリにまだ存在していない上流リポジトリで、新しいパッケージバージョンを簡単に使用できるようになります。

上流リポジトリでタグを使用すると、パッケージの新しいバージョンを下流リポジトリに公開するときに問題が発生する可能性があります。例えば、パッケージ *ウェブヘルパー* の latest タグ は、R と U の両方で同じです。


****  

| リポジトリ | パッケージ名 | パッケージタグ | 
| --- | --- | --- | 
|  R  |  `web-helper`  |   *latest* (バージョン 1.0.1 のエイリアス)  | 
|  U  |  `web-helper`  |   *latest* (バージョン 1.0.1 のエイリアス)  | 

R にバージョン 1.0.2 が公開されると、npm は *latest* タグを 1.0.2 に更新します。


****  

| リポジトリ | パッケージ名 | パッケージタグ | 
| --- | --- | --- | 
|  R  |  `web-helper`  |   *latest* (バージョン 1.0.2 のエイリアス)  | 
|  U  |  `web-helper`  |   *latest* (バージョン 1.0.1 のエイリアス)  | 

ただし、U 内の *latest* は 1.0.1 であるため、npm クライアントはこのタグの値を認識しません。1.0.2 を公開した直後に、リポジトリ R に対して `npm install` を実行すると、公開されたばかりのバージョンの代わりに 1.0.1 がインストールされます。最後に公開されたバージョンをインストールするには、次のように正確なパッケージバージョンを指定する必要があります。

```
npm install web-helper@1.0.2
```

# npm 互換パッケージマネージャーのサポート
<a name="npm-other-clients"></a>

これらの他のパッケージマネージャーは CodeArtifact と互換性があり、npm パッケージ形式と npm ワイヤプロトコルで動作します。
+  [pnpm パッケージマネージャー](https://pnpm.js.org)。CodeArtifact で動作することが確認された最新バージョンは 3.3.4 で、2019 年 5 月 18 日にリリースされたものです。
+  [Yarn パッケージマネージャー](https://yarnpkg.com/)。CodeArtifact で動作することが確認された最新バージョンは 1.21.1 で、2019 年 12 月 11 日にリリースされたものです。

**注記**  
CodeArtifact では Yarn 2.x を使用することをおすすめします。Yarn 1.x は HTTP リトライを行わないため、500 レベルのステータスコードやエラーが発生する断続的なサービス障害の影響を受けやすくなります。Yarn 1.x には別のリトライ戦略を設定する方法はありませんが、Yarn 2.x では追加されています。Yarn 1.x を使用することもできますが、ビルドスクリプトへの高レベルのリトライの追加が必要になる場合があります。例えば、yarn コマンドをループで実行して、パッケージのダウンロードに失敗した場合に再試行するようにします。