セマンティックバージョンの範囲確認
Semver Range Tester
どのバージョンが範囲に入るかを確かめ、2つのバージョンを比べ、一覧を優先順位どおりに並べます。
セマンティックバージョニングについて人が実際に知りたい2つのことに答えます。このバージョンはこの範囲に入るのか、そしてこの一覧のうちnpmが入れるのはどれか、です。2つのバージョンを優先順位で比べ、`npm version`のそれぞれの種類がどんな値を作るのかも示します。
範囲
この範囲が指すもの:1.0.0 以上、2.0.0 未満
npm の範囲文法です。`^` `~` `x` `-` `||` と比較演算子を使います。semver.org にこの文法はありません。あちらが定めるのはバージョンの書式と順序だけです。
バージョン一覧
1 行に 1 つ、またはカンマ区切りで。
どれが当てはまるか
- —1.0.0-alpha
- —1.0.0-alpha.1
- —1.0.0-alpha.beta
- —1.0.0-beta
- —1.0.0-beta.2
- —1.0.0-beta.11
- —1.0.0-rc.1
- 該当1.0.0
- 該当1.2.0これが入ります
- —2.0.0-rc.1
- —2.0.0
- —2.1.3
二つを比べる
順序
1.0.0-beta.11 のほうが高い
違い
prerelease
優先順位は semver.org の第 11 節のとおりです。ビルドメタデータも含めて — つまり無視して — 比べます。
次のバージョン
| major | 2.0.0 |
|---|---|
| minor | 1.3.0 |
| patch | 1.2.4 |
| premajor | 2.0.0-alpha.0 |
| preminor | 1.3.0-alpha.0 |
| prepatch | 1.2.4-alpha.0 |
| prerelease | 1.2.4-alpha.0 |
`npm version <種類>` が作る値です。
みんなが一度は驚く規則があります。プレリリースは、範囲そのものが同じ major.minor.patch のプレリリースに触れているときだけ、その範囲に入ります。ですから ^1.0.0 は 2.0.0-beta.1 に当てはまらず、rc タグが誤って入ってくることもありません。
使い方
範囲を書きます
`^1.0.0`、`~1.2.3`、`>=1.2.7 <1.3.0`、`1.2.3 - 2.3.4`、そして`||`がすべて使えます。それが何に当てはまるのかを言葉で説明したものが、下に出ます。
手元のバージョンを貼り付けます
1行に1つ、あるいはカンマ区切りです。`npm view <パッケージ> versions`の出力をそのまま貼り付けられます。それぞれ当てはまるかどうかが印で示され、npmが入れるものにラベルが付きます。
2つを比べるか、次のリリースを計画します
比較のパネルはsemver.orgの第11節をそのまま守ります。上げ方の表は、ある出発点から`npm version major`や`preminor`などが何を作るのかを示します。
よくある質問
`^1.0.0`が`2.0.0-beta.1`に当てはまらないのはなぜですか
理由が2つ重なっています。`^1`はメジャー2に届きませんし、それとは別に、プレリリースは同じmajor.minor.patchのプレリリースを範囲自身が名指ししているときにしか、その範囲に入りません。2つ目の規則のおかげで、`rc`のタグがうっかり入ることがありません。
`^0.2.3`の動きが違うのはなぜですか
1.0.0より下では、キャレットがマイナーまで締まります。`^0.2.3`は0.2.xを許しますが、0.3.0は許しません。0.xのプロジェクトはマイナーごとに壊れるものと見なされるからです。semver.orgではなくnpmの規則で、毎回みなを驚かせます。
`1.0.0+build.1`と`1.0.0`は違いますか
文字列は違いますが、優先順位は同じです。第10節が、比較のときにビルドメタデータを無視すると定めています。つまりビルドメタデータだけが違うバージョンの並べ替えは安定しませんし、その2つのあいだに順序を付けることもできません。
範囲の書き方もsemverの一部ですか
違います。semver.orgが定めるのは、バージョンの形式と、2つのバージョンの比べ方までです。`^`、`~`、`x`、`||`はnpmの範囲の文法で、ほかの生態系はそれを借りるか、別のものを使っています。Cargo、Composer、pipは細部でそれぞれ違います。
ここから渡せます
OpenAPIの差分比較
OpenAPI Diff
2つのOpenAPI文書を比べ、互換性を壊す変更と足しただけの変更を分けて示します。
OSSライセンス選び
Licence Chooser
主なオープンソースライセンスを義務と互換性で見比べ、LICENSEファイルを書き出します。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
YAMLフォーマッター・検証
YAML Formatter & Validator
YAMLのインデントを揃えて検証し、パーサを壊すタブやアンカーの誤りに印を付けます。
次の一手
このツールが出したものをそのまま受け取れる道具です。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
OSSライセンス選び
Licence Chooser
主なオープンソースライセンスを義務と互換性で見比べ、LICENSEファイルを書き出します。
OpenAPIの差分比較
OpenAPI Diff
2つのOpenAPI文書を比べ、互換性を壊す変更と足しただけの変更を分けて示します。
JSON⇄CSV変換
JSON ⇄ CSV
入れ子のJSONをドット記法の列名で平らに開くか、表からオブジェクトを組み直します。
JSON差分比較
JSON Diff
キーの順序を無視して2つのJSONを構造で比べ、追加・削除・変更されたパスを挙げます。
JSONからTypeScript型
JSON to TypeScript
JSONの実例からTypeScriptのインターフェースや型を推論し、省略可能なフィールドとユニオンをまとめます。