semver
npm 用 有意バージョン生成装置
使い方
$ npm install semver
semver.valid('1.2.3') // '1.2.3' semver.valid('a.b.c') // null semver.clean(' =v1.2.3 ') // '1.2.3' semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true semver.gt('1.2.3', '9.8.7') // false semver.lt('1.2.3', '9.8.7') // true
コマンドラインからの利用:
$ semver -h
semver <version> [<version> [...]] [-r <range> | -i <inc> | -d <dec>]
- ひとつまたは複数のバージョンに対して、与えられたレンジ内かチェックし、且つソートをかけます。
- 増加(inc)または減少(dec)オプションが指定されない限り、複数のバージョンとレンジを指定出来ます。
- 増加または減少オプションが指定された場合は、1つのバージョンを指定分増加させることになります。
- 形式が正しく、全てのレンジに対して適合する場合にプログラムは正常終了し、全ての適合バージョンを表示します。
- 形式が誤っていたり、レンジに適合しないものがあれば、異常終了します。
- バージョンは昇順で表示されるので、複数のバージョンを与えれば、それを並び替えてくれます。
バージョン(versions)について
"version" は v2.0.0 (http://semver.org/ 参照) の仕様に従います。 。
"="
と
"v"
は取り除かれ、無視されます。
レンジ(ranges)について
以下の記述形式がサポートされています:
1.2.3
特定のバージョンを指定する方法。 他に何もしない場合です。ビルドメタデータは無視されますので、1.2.3+build2012
はこの指定に適合します。>1.2.3
特定のバージョンより上<1.2.3
特定のバージョンより下。 プレリリースタグがないバージョン範囲のとき、 実質的に"前のもの" であったとしても、 プレリリースバージョンは他のものも許容されません。>=1.2.3
上もしくは等しい。プレリリースバージョンは "通常の指定"とは異なりますので1.2.3-beta
は この指定に対して不適合ですが、2.3.0-beta
は適合します。<=1.2.3
下もしくは等しい。この場合、プレリリースバージョンが 許可されますので、1.2.3-beta
は適合します。1.2.3 - 2.3.4
:=>=1.2.3 <=2.3.4
~1.2.3
:=>=1.2.3-0 <1.3.0-0
"1.2.3 に近しいもの"です。 チルダ(~)を使ったとき、プレリリースバージョンもサポートされますが、 高位バージョンが変わると当てはまりません。よって1.3.0-beta
は~1.2.3
に適合しません。~1.2
:=>=1.2.0-0 <1.3.0-0
"1.2から始まる全てのバージョン"1.2.x
:=>=1.2.0-0 <1.3.0-0
"1.2から始まる全てのバージョン"~1
:=>=1.0.0-0 <2.0.0-0
"1から始まる全てのバージョン"1.x
:=>=1.0.0-0 <2.0.0-0
"1から始まる全てのバージョン"
レンジは1つのスペース ( "且つ" を意味します) もしくは
||
("または"を意味します) で繋ぎます。
関数(functions)について
全てのメソッドとクラスは引数の最後に
loose
フラグを真偽値で持ちます。 trueであれば
semver に適合した厳密な文字列でなくとも許容します。出力結果は、もちろん、100% 厳密な文字列です。
厳格モード(strict-mode) での比較子とレンジは厳密に semver が解釈可能な 文字列で扱います。
- valid(v): 解釈されたバージョン文字列を返します。解釈不可であれば null を返します。
- inc(v, release): リリースタイプ (major, minor, patch, or prerelease) に合わせた、増加後の バージョンを返します。引数に誤りがあれば null を返します。
比較
- gt(v1, v2):
v1 > v2
- gte(v1, v2):
v1 >= v2
- lt(v1, v2):
v1 < v2
- lte(v1, v2):
v1 <= v2
- eq(v1, v2):
v1 == v2
論理的に同じであれば 同じ文字列でなくとも true を返します。論理的にどのように比較されるかは 前記した通りです。 - neq(v1, v2):
v1 != v2
eq と反対の意味です - cmp(v1, comparator, v2): 比較子の文字列を入れると、
上述の関数を呼び出します。
"==="
と"!=="
は単純な文字列の完全一致比較を実行します。 誤った文字列を与えると、エラーを投げます。 - compare(v1, v2): v1 == v2 の場合は 0、v1 が大きい場合は 1、v2 が 大きい場合は -1 を返します。Array.sort() 関数に渡せば、昇順ソートを実行してくれます。
- rcompare(v1, v2): compare の反対です。Array.sort() 関数に渡せば、降順ソートを実行してくれます。
レンジ
- validRange(range): レンジを返します。誤りがあれば null を返します。
- satisfies(version, range): バージョンがレンジに適合すれば true を返します。
- maxSatisfying(versions, range): 与えられたバージョンの中でレンジに適合する 最新のバージョンを返します。適合するものが無い場合、 null を返します。