バージョンがnpm範囲を満たすかテストする

1.5.3のような特定バージョンが^1.2.0や>=1.0.0 <2.0.0のようなnpm semver範囲を満たすかテストします。範囲の充足判定の仕組みを解説。

Range Testing

詳細な説明

npmバージョン範囲の充足テスト

semver範囲マッチングの核心的な問いは:**バージョンXは範囲Yを満たすか?**です。これはnpm installが依存関係を解決するたびに行う処理です。

範囲充足の仕組み

バージョンは範囲が定義する境界内に収まる場合に充足します:

バージョン 範囲 充足? 理由
1.5.3 ^1.2.0 1.5.3は>=1.2.0かつ<2.0.0
2.0.0 ^1.2.0 2.0.0は<2.0.0ではない
1.1.9 ^1.2.0 1.1.9は>=1.2.0ではない

段階的な範囲テスト

手動で範囲をテストするには:

  1. 範囲を展開してコンパレータ形式に
    • ^1.2.0>=1.2.0 <2.0.0
    • ~1.2.0>=1.2.0 <1.3.0
  2. 各境界に対してバージョンを比較
  3. コンパレータセット内ではすべての境界を満たす必要がある(AND論理)
  4. OR範囲の場合、少なくとも1つのセットを満たせばよい

プレリリースの注意点

npmには特別なルールがあります:プレリリースバージョンは、範囲が同じMAJOR.MINOR.PATCHのプレリリースを含む場合にのみマッチします。

一括テスト

複数バージョンを範囲に対して評価する場合、Batch Checkタブを使用してリストを貼り付け、結果を即座にハイライト表示で確認できます。

ユースケース

npm/yarnプロジェクトでの依存関係解決の問題をデバッグする場合、公開前にpackage.json範囲が特定のバージョンを受け入れるか確認する場合、またはnpmが予期しないバージョンをインストールした理由を理解する場合。

試してみる — Semver Calculator

フルツールを開く