

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

# 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
```