Semver
Given a version number MAJOR.MINOR.PATCH
:
MAJOR |
incompatible API changes |
MINOR |
add functionality (backwards-compatible) |
PATCH |
bug fixes (backwards-compatible) |
Simple ranges
1.2.3
=1.2.3
>1.2.3
<1.2.3
>=1.2.3
Note that suffixed versions (1.2.3-rc1
) are not matched.
Ranges
Range |
Description |
Notes |
~1.2.3 |
is >=1.2.3 <1.3.0 |
|
^1.2.3 |
is >=1.2.3 <2.0.0 |
|
^0.2.3 |
is >=0.2.3 <0.3.0 |
(0.x.x is special) |
^0.0.1 |
is =0.0.1 |
(0.0.x is special) |
^1.2 |
is >=1.2.0 <2.0.0 |
(like ^1.2.0) |
~1.2 |
is >=1.2.0 <1.3.0 |
(like ~1.2.0) |
^1 |
is >=1.0.0 <2.0.0 |
|
~1 |
same |
|
1.x |
same |
|
1.* |
same |
|
1 |
same |
|
* |
any version |
|
x |
same |
|
Hyphenated ranges
Range |
Description |
1.2.3 - 2.3.4 |
is >=1.2.3 <=2.3.4 |
Partial right
Range |
Description |
1.2.3 - 2.3 |
is >=1.2.3 <2.4.0 |
1.2.3 - 2 |
is >=1.2.3 <3.0.0 |
Partial left
Range |
Description |
1.2 - 2.3.0 |
is 1.2.0 - 2.3.0 |
When the right is partial (eg, 2.3
), missing pieces are assumed to be x
(eg, 2.3.x
).
When the left is partial (eg, 1.2
), missing pieces are assumed to be 0
(eg, 1.2.0
).
Combining ranges
Range |
Description |
>=0.14 <16 |
And (space-separated) |
0.14.x || 15.x.x |
Or (pipe-separated) |
Pre-releases
1.2.3-prerelease+build
Explanation
^ |
means “compatible with” |
~ |
means “reasonably close to” |
0.x.x |
is for “initial development” |
1.x.x |
means public API is defined |
References