Semver: Установка и использование с npm

Этот документ описывает установку и использование пакета semver для работы с версиями программного обеспечения. Рассмотрим основные функции пакета на практике, используя npm и командную строку.

Установка пакета semver

Установите пакет semver с помощью npm:

npm install semver

Пакет не имеет зависимостей и небольшой по размеру. После установки в папке node_modules появится директория semver. Файл package.json внутри содержит информацию о пакете, включая имя (semver) и версию (например, 5.5.0). Директория ./bin содержит исполняемый файл semver.

Использование пакета semver в JavaScript

Рассмотрим практическое применение пакета semver в JavaScript. В файле index.js импортируем пакет:

const semver = require('semver');

Далее, используем различные методы semver для работы с версиями.

Проверка валидности версии

Метод semver.valid() проверяет валидность строки версии:

console.log(semver.valid('1.5.2')); // Вывод: 1.5.2
console.log(semver.valid('15to2')); // Вывод: null
console.log(semver.valid('1.5.2-beta.10')); // Вывод: 1.5.2-beta.10

Возвращает версию, если она валидна; иначе — null.

Сравнение версий

Метод semver.gt() сравнивает две версии:

console.log(semver.gt('1.2.3', '4.3.2')); // Вывод: false
console.log(semver.gt('1.2.5', '4.3.2')); // Вывод: true
console.log(semver.gt('5.2.3-beta.10', '5.2.3-beta.5')); // Вывод: true

Возвращает true, если первая версия больше второй, и false в противном случае.

Разбор версии

Метод semver.coerce() преобразует строку версии в объект:

let version = semver.coerce('v3.0.0');
console.log(version); // Вывод: SemVer { major: 3, minor: 0, patch: 0 }
console.log(version.major); // Вывод: 3

Возвращает объект с полями major, minor, patch и другими, содержащими информацию о компонентах версии.

Диапазоны версий

Метод semver.range() создаёт объект диапазона версий, а semver.satisfies() проверяет, удовлетворяет ли версия диапазону:

const constraint = semver.range('^2.22.2'); // Диапазон "^2.22.2"
console.log(semver.satisfies('2.22.3.3', constraint)); // Вывод: true
console.log(semver.satisfies('3.0.0', constraint)); // Вывод: false

const tildeConstraint = semver.range('~2.22.2'); // Диапазон "~2.22.2"
console.log(semver.satisfies('2.22.5', tildeConstraint)); // Вывод: true
console.log(semver.satisfies('2.23.2', tildeConstraint)); // Вывод: false

Символ ^ (caret) означает неизменную major версию, ~ (tilde) — неизменные major и minor версии.

Увеличение версии

Метод semver.inc() увеличивает версию:

console.log(semver.inc('1.4.3', 'patch')); // Вывод: 1.4.4
console.log(semver.inc('1.4.3', 'minor')); // Вывод: 1.5.0
console.log(semver.inc('1.4.3', 'major')); // Вывод: 2.0.0

Разбор сложных версий

Метод semver.parse() разбирает сложные версии, включая pre-release метки:

console.log(semver.parse('1.4.3-alpha.10')); // Вывод: { major: 1, minor: 4, patch: 3, prerelease: [ 'alpha', '10' ] }

Пакет semver предоставляет удобные инструменты для работы с версиями программного обеспечения: проверка валидности, сравнение, создание и проверка диапазонов, а также увеличение версий. Его использование упрощает управление версиями в проектах.

Что будем искать? Например,программа