Skip to main content

Crate js_semver

Crate js_semver 

Source
Expand description

§js-semver

License crates github repo codecov

A parser and evaluator for npm’s flavor of Semantic Versioning.

This crate is designed for the JavaScript ecosystem and follows node-semver (the one npm uses) parsing and range semantics. It maintains high compatibility and performance, and has zero dependencies by default.

§Examples

use js_semver::{BuildMetadata, PreRelease, Range, Version};

fn main() {
    let range: Range = ">=4.1.0 <5.0.0".parse().unwrap();

    // Pre-release versions are not included in the range unless explicitly specified.
    let version = Version {
        major: 4,
        minor: 1,
        patch: 0,
        pre_release: PreRelease::new("rc.1").unwrap(),
        build: BuildMetadata::default(),
    };
    assert!(!range.satisfies(&version));

    // Stable version is included in the range.
    let version: Version = "4.1.0".parse().unwrap();
    assert!(range.satisfies(&version));
}

Structs§

BuildMetadata
Parsed build metadata such as build.42.
PreRelease
A parsed pre-release identifier list such as alpha.1.
Range
A version range, e.g. ^1.0.0 or >=1.0.0 <2.0.0-0.
SemverError
Error returned when a version or range string cannot be parsed.
Version
A parsed semantic version.