バージョンが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.2.0→>=1.2.0 <2.0.0~1.2.0→>=1.2.0 <1.3.0
- 各境界に対してバージョンを比較
- コンパレータセット内ではすべての境界を満たす必要がある(AND論理)
- OR範囲の場合、少なくとも1つのセットを満たせばよい
プレリリースの注意点
npmには特別なルールがあります:プレリリースバージョンは、範囲が同じMAJOR.MINOR.PATCHのプレリリースを含む場合にのみマッチします。
一括テスト
複数バージョンを範囲に対して評価する場合、Batch Checkタブを使用してリストを貼り付け、結果を即座にハイライト表示で確認できます。
ユースケース
npm/yarnプロジェクトでの依存関係解決の問題をデバッグする場合、公開前にpackage.json範囲が特定のバージョンを受け入れるか確認する場合、またはnpmが予期しないバージョンをインストールした理由を理解する場合。