Инструменты для версий и пакетов
Вопросы про версии и зависимости возникают в любой экосистеме: подходит ли диапазон npm под версию, которую вы собираетесь опубликовать, разрешается ли поле exports в package.json так, как ожидает сборщик, или как будет выглядеть зависимость Maven, переведённая в DSL Gradle. Здесь собраны инструменты для версий и диапазонов SemVer, PEP 440 и других пакетных менеджеров, а также редакторы package.json и его карты exports.
Калькулятор SemVer сравнивает версии и сразу проверяет диапазоны npm, а проверка версий PEP 440 — для собственной, более строгой схемы версий Python, потому что эти две системы не совпадают. Визуализация exports в package.json проверяет subpath-экспорты сразу для import и require, что покажет несовпадение, которое обычный просмотрщик JSON не заметит. Конвертер Maven в Gradle и проверка версий в Composer, NuGet, Cargo и Go пакетных менеджерах закрывают работу с другими экосистемами — всё считается локально.
8 инструментов
Сравнение и проверка диапазонов версий
Редактирование package.json и exports
-
редактор package.json
Отредактировать package.json и сортировать зависимости, показав изменения
-
Визуализация exports в package.json
Изучить exports в package.json, проверив вход для import или require
-
запрос Browserslist
Проверить запрос Browserslist и разобрать, как and ограничивает весь набор версий
Вопросы об инструментах категории «Versioning & Packages»
Диапазоны вроде ^1.2.3 или ~1.2.3 подчиняются конкретным правилам SemVer о том, какие части версии разрешено менять, и легко упустить, что caret-диапазон обращается с версией 0.x иначе, чем с 1.x. Калькулятор SemVer напрямую проверяет версию против диапазона, вместо того чтобы разбираться вручную.
По PEP 440 это валидный pre-release, и он сортируется перед финальным релизом 1.0.0. Проверка версий PEP 440 нормализует и сортирует список версий Python и сверяет их со строками условий — это надёжнее, чем сравнивать версии как обычные строки вручную.
Поле exports может указывать разные файлы для условий import и require, и несовпадение — например, CommonJS-файл, привязанный к условию import — ломает разрешение для одного пути, но не для другого. Визуализация exports в package.json проверяет subpath-разрешение для обоих условий ещё до публикации пакета.