js-semver 0.3.0

Parser and evaluator for npm's flavor of Semantic Versioning
Documentation

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.

Example

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));
}

Comparison with other crates

node-semver

node-semver crate has numerous issues, including unnecessary dependencies like miette, incompatibilities with npm's node-semver, and the fact that it is no longer actively maintained.

semver

semver crate is designed for Cargo. Therefore, it is not well-suited for the Node.js ecosystem, such as parsing versions in package.json.

License

MIT-0

This project's tests incorporate material from third parties, but they are not part of the library. For attribution and additional notice information, see NOTICE.md.