Dependency range evaluator

Zobacz dokładnie, które wersje dopuszcza semver range

Wklej range, porównaj wersje paczki i sprawdź znormalizowany zestaw comparatorów przed zmianą package.json. Worker działa lokalnie, nie pobiera metadanych npm i jawnie pokazuje prerelease behavior.

  • Bez registry lookup
  • Prerelease toggle
  • Version matrix

Użyj przed review polityki zależności

Semver ranges wyglądają krótko, ale decydują o oknie upgrade'u, ekspozycji na prerelease i bezpieczeństwie 0.x. Ten playground zamienia ranges na comparator sets, min/max satisfying versions i macierz wersji widoczną w review.

Interaktywne uruchomienie w przeglądarce ewaluuje zakres przez paczkę npm semver w workerze. Strona nie pobiera metadanych paczek, nie odpytuje registry.npmjs.org i nie zapisuje wklejonych list wersji.

Range workbench

Wybierz preset albo wklej range i candidate versions. Przełącz loose parsing lub includePrerelease, żeby odwzorować politykę review.

Czyste

Pokazuje typowy domyślny zakres npm: dopuszcza kompatybilne wydania 1.x od 1.2.3, ale zatrzymuje się przed 2.0.0.

Range input

Wynik ewaluacji

Znormalizowany range>=1.2.3 <2.0.0-0
Matches3/6
Min version1.2.3
Czas8 ms
Min satisfying
1.2.3
Max satisfying
1.9.9

Comparator sets

>=1.2.3 <2.0.0-0

Macierz wersji

1.2.21.2.2 NO MATCH
1.2.31.2.3 MATCH
1.3.01.3.0 MATCH
1.9.91.9.9 MATCH
2.0.0-beta.12.0.0-beta.1 NO MATCH
2.0.02.0.0 NO MATCH

Snippet semver do skopiowania

import { maxSatisfying, satisfies, validRange } from 'semver';

const range = "^1.2.3";
const versions = [
  "1.2.2",
  "1.2.3",
  "1.3.0",
  "1.9.9",
  "2.0.0",
  "2.0.0-beta.1"
];
const options = {};

const normalizedRange = validRange(range, options);
const matching = versions.filter((version) => satisfies(version, range, options));
const latestAllowed = maxSatisfying(versions, range, options);

console.log({ normalizedRange, matching, latestAllowed });

Notatki do review range

Caret i tilde to decyzje polityki

Caret zwykle otwiera szersze kompatybilne okno niż tilde. Dla bibliotek z dobrą kompatybilnością to może być korzystne. Dla kruchych integracji węższy tilde lane bywa łatwiejszy do review.

0.x jest celowo wąskie

Caret range poniżej 1.0.0 nie zachowuje się jak stabilny major range. ^0.2.3 zatrzymuje się przed 0.3.0, a ^0.0.3 akceptuje tylko patch-compatible releases.

Prerelease matching jest jawny

Prerelease versions są wykluczone, chyba że ta sama wersja bazowa uczestniczy w range albo includePrerelease jest włączone. To chroni przed przypadkową adopcją beta podczas zwykłych upgrade'ów.

Użyj ich, gdy polityka zależności łączy się z formatowaniem dat, opcjami TypeScript compiler albo review kontraktów schema.