npm タグ処理 - CodeArtifact

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

npm タグ処理

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

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

npm クライアントでタグを編集する

3 つの npm dist-tag コマンド (addrm および ls) は、 CodeArtifact リポジトリでは、デフォルト npm レジストリ 内と同様に機能します。

npm タグと CopyPackageVersions API

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 の詳細については、リポジトリ間でのパッケージのコピー を参照してください。

npm タグと上流リポジトリ

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