semver 0.8.0
Semantic Versioning Library
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
semver
Semantic Versioning and Minimal Version Selection Library
Implementation
This library parses, validates and compares version numbers and version ranges, and resolves dependency graphs using Minimal Version Selection.
It uses the following formats:
- Semantic Versioning 2.0.0 - http://semver.org
- Semantic Versioning Range - https://github.com/isaacs/node-semver
- Minimal Version Selection - https://research.swtch.com/vgo-mvs
Usage
import semver;
import mvs;
auto version1 = SemVer("1.0.0");
assert(version1.isValid);
assert(version1.isStable);
auto version2 = SemVer("1.0.0-rc.1");
assert(version2.isValid);
assert(!version2.isStable);
auto version3 = SemVer("1.2.3-rc.42");
assert(version3.major == 1);
assert(version3.minor == 2);
assert(version3.patch == 3);
assert(SemVer("1.0.0") > SemVer("1.0.0+build.1"));
assert(SemVer("1.0.0").differAt(SemVer("1.0.0+build.1")) == VersionPart.BUILD);
auto versionRange = SemVerRange(">=1.0.0");
assert(versionRange.isValid);
assert(SemVer("1.0.1").satisfies(versionRange));
assert(SemVer("1.1.0").satisfies(versionRange));
auto semVers = [SemVer("1.1.0"), SemVer("1.0.0"), SemVer("0.8.0")];
assert(semVers.maxSatisfying(SemVerRange("<=1.0.0")) == SemVer("1.0.0"));
assert(semVers.maxSatisfying(SemVerRange(">=1.0")) == SemVer("1.1.0"));
assert(semVers.minSatisfying(SemVerRange(">=1.0")) == SemVer("1.0.0"));
assert(semVers.minSatisfying(SemVerRange("<=0.8.0")) == SemVer("0.8.0"));
semVers = [SemVer("1.0.0+build.3"), SemVer("1.0.0+build.1"), SemVer("1.1.0")];
assert(semVers.maxSatisfying(SemVerRange("<=1.0.0")) == SemVer("1.0.0+build.3"));
assert(semVers.maxSatisfying(SemVerRange(">=1.0")) == SemVer("1.1.0"));
auto roots = [
"A": SemVerRange(">=1.0.0"),
"C": SemVerRange(">=1.2.0"),
];
auto available = [
"A": [SemVer("1.0.0"), SemVer("1.1.0"), SemVer("2.0.0")],
"B": [SemVer("1.0.0"), SemVer("1.1.0"), SemVer("2.0.0")],
"C": [SemVer("1.0.0"), SemVer("1.2.0")],
];
auto dependencies = [
ModuleVersion("A", SemVer("1.0.0")): ["B": SemVerRange(">=1.0.0")],
ModuleVersion("A", SemVer("1.1.0")): ["B": SemVerRange(">=1.1.0")],
ModuleVersion("A", SemVer("2.0.0")): ["B": SemVerRange(">=2.0.0")],
ModuleVersion("B", SemVer("1.0.0")): ["C": SemVerRange(">=1.0.0")],
ModuleVersion("B", SemVer("1.1.0")): ["C": SemVerRange(">=1.2.0")],
ModuleVersion("B", SemVer("2.0.0")): ["C": SemVerRange(">=1.2.0")],
];
auto selected = minimalVersionSelection(roots, available, dependencies);
assert(selected["A"] == SemVer("1.0.0"));
assert(selected["B"] == SemVer("1.0.0"));
assert(selected["C"] == SemVer("1.2.0"));
- 0.8.0 released 5 months ago
- dcarp/semver
- MIT
- Copyright © 2014-2017 Dragoş Carp
- Authors:
- Dependencies:
- none
- Versions:
-
Show all 30 versions0.8.0 2026-Mar-24 0.7.1 2026-Mar-01 0.7.0 2026-Feb-28 0.6.0 2025-Sep-21 0.5.0 2023-Mar-30 - Download Stats:
-
-
28 downloads today
-
461 downloads this week
-
1284 downloads this month
-
36769 downloads total
-
- Score:
- 3.2
- Short URL:
- semver.dub.pm