Skip to content

ryuapp/js-semver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Parser and evaluator for npm's flavor of Semantic Versioning

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors