@guanghechen/version
v1.0.2
Published
Lightweight semver version comparison utilities.
Downloads
424
Readme
Lightweight semver version comparison utilities.
Install
npm
npm install --save @guanghechen/versionyarn
yarn add @guanghechen/version
Usage
Parse and Compare Versions
import { parseVersion, compareVersions, compareSemVer } from '@guanghechen/version'
// Parse a version string
const v = parseVersion('1.2.3-alpha.1')
// => { major: 1, minor: 2, patch: 3, prerelease: ['alpha', 1] }
// Compare version strings
compareVersions('1.2.3', '1.2.4') // => -1
compareVersions('2.0.0', '1.9.9') // => 1
compareVersions('1.0.0', '1.0.0') // => 0
// Compare parsed versions
compareSemVer(
{ major: 1, minor: 0, patch: 0, prerelease: [] },
{ major: 2, minor: 0, patch: 0, prerelease: [] }
) // => -1Check Version Ranges
import { satisfies } from '@guanghechen/version'
// Exact version
satisfies('1.2.3', '1.2.3') // => true
// Caret ranges (^)
satisfies('1.2.3', '^1.0.0') // => true
satisfies('2.0.0', '^1.0.0') // => false
// Tilde ranges (~)
satisfies('1.2.5', '~1.2.0') // => true
satisfies('1.3.0', '~1.2.0') // => false
// Comparison operators
satisfies('1.5.0', '>=1.0.0') // => true
satisfies('1.5.0', '<2.0.0') // => true
satisfies('1.5.0', '>1.0.0 <2.0.0') // => true
// X-ranges
satisfies('1.2.3', '1.x') // => true
satisfies('1.2.3', '1.2.x') // => true
// Hyphen ranges
satisfies('1.5.0', '1.0.0 - 2.0.0') // => true
// OR ranges
satisfies('3.0.0', '^1.0.0 || ^2.0.0 || ^3.0.0') // => true
// Prerelease versions (includePrerelease defaults to true)
satisfies('1.0.0-alpha', '^1.0.0') // => true
// Strict mode (node-semver compatible)
satisfies('1.0.0-alpha', '^1.0.0', { includePrerelease: false }) // => falseAPI
Types
interface ISemVer {
major: number
minor: number
patch: number
prerelease: ReadonlyArray<string | number>
}
interface IPartialSemVer {
major: number
minor: number | undefined
patch: number | undefined
prerelease: ReadonlyArray<string | number>
isWildcard?: boolean
}
interface ISatisfiesOptions {
includePrerelease?: boolean // default: true
}Functions
| Function | Description |
| ------------------------------ | ----------------------------------------- |
| parseVersion(version) | Parse a full semver string to ISemVer |
| parsePartialVersion(version) | Parse a partial version |
| compareVersions(v1, v2) | Compare two version strings (-1, 0, 1) |
| compareSemVer(v1, v2) | Compare two parsed versions (-1, 0, 1) |
| satisfies(version, range) | Check if version satisfies the range |
| formatVersion(v) | Format a parsed version back to string |
| isFullVersion(v) | Check if partial version is full |
| toFullVersion(v) | Convert partial to full (fill with 0s) |
