Balena Semantic Versioning Utilities

4.0.18 · active · verified Sun Apr 19

balena-semver, currently at version 4.0.18, provides a collection of Balena-specific utility methods for working with semantic versions. While it parses and adheres to standard semver strings, its key differentiator is its ability to handle Balena OS version formats, such as 'Resin OS vX.Y.Z'. The package maintains a frequent release cadence, primarily issuing patch updates as seen with numerous recent v4.0.x releases. This module is explicitly noted as a low-level utility intended for internal Balena components and is generally not recommended for direct use by end-users; instead, the Balena SDK is suggested for most applications. It ships with TypeScript types, facilitating its use in modern JavaScript and TypeScript projects. The package requires Node.js versions `^20.12.0 || >= 22.0.0`.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates basic usage including comparing different version formats, satisfying ranges, and extracting version components.

import { compare, satisfies, major, prerelease, parse } from 'balena-semver';

const versionA = 'Resin OS v2.0.2+rev2';
const versionB = '2.0.5';
const versionC = '1.16.0';
const versionD = 'Resin OS 1.16.0';
const versionE = '1.2.3-beta.1';

console.log(`Comparing '${versionA}' and '${versionB}': ${compare(versionA, versionB)}`);
// Expected: 1 (versionA is greater, custom parsing applies)

console.log(`'${versionB}' satisfies '>=2.0.0 <2.1.0': ${satisfies(versionB, '>=2.0.0 <2.1.0')}`);
// Expected: true

console.log(`Major version of '${versionA}': ${major(versionA)}`);
// Expected: 2

console.log(`Prerelease of '${versionE}': ${prerelease(versionE)}`);
// Expected: ['beta', 1]

const parsedVersion = parse(versionD);
if (parsedVersion) {
  console.log(`Parsed version of '${versionD}': Major=${parsedVersion.major}, Minor=${parsedVersion.minor}, Patch=${parsedVersion.patch}`);
} else {
  console.log(`Failed to parse '${versionD}'.`);
}

// Example of sorting versions
const versions = ['2.0.0', 'Resin OS 1.16.0', '1.2.3', 'Resin OS v2.0.2+rev2', '2.0.0-beta'];
versions.sort(compare);
console.log('Sorted versions (ascending):', versions);

view raw JSON →