SemVer parser. parse, verify, compare SemVer.
npm install semver-parser


Parse, verify, compare SemVer.
``console`
npm install semver-parser
APIs can be used either synchronously or asynchronously.
Async function returns Promise which resolves with the result.
sync:
`javascript`
import { compareSemVer, isValidSemVer, parseSemVer } from 'semver-parser';
async:
`javascript`
import { promises } from 'semver-parser';
const { compareSemVer, isValidSemVer, parseSemVer } = promises;
NOTE: Is "v1.2.3" a semantic version?
> Is "v1.2.3" a semantic version?
>
> No, "v1.2.3" is not a semantic version. However, prefixing a semantic version with a "v" is a common way (in English) to indicate it is a version number.
For ease of use, this parser supports "v" prefixed string.
If you do not want to accept "v" prefix, set strict param to true.
Parses version string.
* @param {string} version - version string
* @param {boolean} [strict] - reject 'v' prefixed
* @returns {Object} - parsed result, contains properties below
- version {string} - given version string
- matches {boolean} - matches SemVer format
- major {number|undefined} - major version
- minor {number|undefined} - minor version
- patch {number|undefined} - patch version
- pre {Array<string|number>|undefined} - pre release version in array
- build {Array<string|number>|undefined} - build ID in array
Determine whether the given argument is a valid SemVer string.
* @param {string} version - version string
* @param {boolean} [strict] - reject 'v' prefixed
* @returns {boolean} - result
Compare versions in SemVer format.
* @param {string} version - version string
* @param {string} base - base version string to compare from
* @param {boolean} [strict] - reject 'v' prefixed
* @returns {number}
- -1 or negative number, if version is less than base version
- 0, if version is equal to base version
- 1 or positive number, if version is greater than base version
bnf
::=
| "-"
| "+"
| "-" "+"
`
`javascript
(?:0|[1-9]\d)(?:\.(?:0|[1-9]\d)){2}(?:-(?:0|[1-9]\d|\d[A-Za-z-][\dA-Za-z-])(?:\.(?:0|[1-9]\d|\d[A-Za-z-][\dA-Za-z-])))?(?:\+(?:\d[A-Za-z-][\dA-Za-z-]|\d+)(?:\.(?:\d[A-Za-z-][\dA-Za-z-]|\d+)))?
`$3
`bnf
::= "." "."
`
`javascript
(?:0|[1-9]\d)(?:\.(?:0|[1-9]\d)){2}
`$3
`bnf
::=
`
`javascript
0|[1-9]\d*
`$3
`bnf
::=
`
`javascript
0|[1-9]\d*
`$3
`bnf
::=
`
`javascript
0|[1-9]\d*
`$3
`bnf
::=
`
`javascript
(?:0|[1-9]\d|\d[A-Za-z-][\dA-Za-z-])(?:\.(?:0|[1-9]\d|\d[A-Za-z-][\dA-Za-z-]))*
`$3
`bnf
::=
| "."
`
`javascript
(?:0|[1-9]\d|\d[A-Za-z-][\dA-Za-z-])(?:\.(?:0|[1-9]\d|\d[A-Za-z-][\dA-Za-z-]))*
`$3
`bnf
::=
`
`javascript
(?:\d[A-Za-z-][\dA-Za-z-]|\d+)(?:\.(?:\d[A-Za-z-][\dA-Za-z-]|\d+))*
`$3
`bnf
::=
| "."
`
`javascript
(?:\d[A-Za-z-][\dA-Za-z-]|\d+)(?:\.(?:\d[A-Za-z-][\dA-Za-z-]|\d+))*
`$3
`bnf
::=
|
`
`javascript
0|[1-9]\d|\d[A-Za-z-][\dA-Za-z-]*
`$3
`bnf
::=
|
`
`javascript
\d[A-Za-z-][\dA-Za-z-]|\d+
`$3
`bnf
::=
|
|
|
`
`javascript
[\dA-Za-z-][A-Za-z-][\dA-Za-z-]
`
optimized:
`javascript
\d[A-Za-z-][\dA-Za-z-]
`$3
`bnf
::= "0"
|
|
`
`javascript
0|[1-9]\d*
`$3
`bnf
::=
|
`
`javascript
[\dA-Za-z-]+
`$3
`bnf
::=
|
`
`javascript
[\dA-Za-z-]
`$3
`bnf
::=
| "-"
`
`javascript
[A-Za-z-]
`$3
`bnf
::=
|
`
`javascript
\d+
`$3
`bnf
::= "0"
|
`
`javascript
\d
`$3
`bnf
::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
`
`javascript
[1-9]
`$3
`bnf
::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J"
| "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T"
| "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" | "c" | "d"
| "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n"
| "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x"
| "y" | "z"
`
`javascript
[A-Za-z]
``