Validator SemVer

Validasi versi semantik dan urai rentang versi.

Apa yang dihitung sebagai versi

Tata bahasa SemVer 2.0.0 ketat. Ketiga angka adalah bilangan bulat ASCII non-negatif tanpa nol di depan.

MAJOR.MINOR.PATCH
merusak / kompatibel / perbaikan
1.2.3-alpha.1
prarilis, berperingkat di bawah 1.2.3
1.2.3+build.5
metadata build, diabaikan untuk prioritas
1.2.3-0.3
pengenal prarilis numerik dibandingkan sebagai angka
v1.2.3
bukan versi semantik (FAQ spesifikasi)
01.2.3
tidak valid: nol di depan
1.2.3-01
tidak valid: prarilis numerik berisi nol di depan
1.2.3+0.09
valid: metadata build boleh berisi nol di depan

Operator rentang

1.2.3
persis versi ini
^1.2.3
kompatibel: >=1.2.3 <2.0.0-0
~1.2.3
hanya patch: >=1.2.3 <1.3.0-0
>=1.2.3 <2.0.0
AND dari komparator dalam satu set
1.2.3 - 2.0.0
rentang inklusif, spasi wajib di kedua sisi
1.2.x / 1.x / *
versi parsial dan wildcard
a || b
gabungan: salah satu set boleh cocok
~>1.2.3
alias historis npm, ditangani sebagai ~1.2.3

Cara npm mengisi versi parsial

Diverifikasi terhadap node-semver; akhiran -0 adalah sentinel npm yang mengecualikan prarilis seri berikutnya.

Cara npm mengisi versi parsial
RentangDiperluas
^1.2.3>=1.2.3 <2.0.0-0
^0.2.3>=0.2.3 <0.3.0-0
^0.0.3>=0.0.3 <0.0.4-0
^1>=1.0.0 <2.0.0-0
~1.2.3>=1.2.3 <1.3.0-0
~1.2>=1.2.0 <1.3.0-0
~1>=1.0.0 <2.0.0-0
1.2.x>=1.2.0 <1.3.0-0
1.x>=1.0.0 <2.0.0-0
1.2.3 - 2.0.0>=1.2.3 <=2.0.0
1.2.3 - 2>=1.2.3 <3.0.0-0
>1.x>=2.0.0

Prioritas prarilis

1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0

Pengenal numerik dibandingkan sebagai angka dan berperingkat di bawah pengenal alfanumerik; awalan yang lebih pendek berperingkat lebih rendah. Metadata build tidak pernah berpengaruh.

Kesalahan umum

Ini sering ditempel langsung dari package.json dan log obrolan.

"1.2.3",
Tanda kutip dan koma ikut dari package.json - tempel versinya saja.
v1.2.3
Tag Git membawa v, versi semantik tidak.
1.2
Dua angka adalah rentang, bukan versi.
1.2.3-01
Mode longgar npm membacanya sebagai 1.2.3-1 dan menulis ulangnya diam-diam.

Buku aturan yang dipakai

  • Putusan atas string versi adalah SemVer 2.0.0 ketat - tanpa mode longgar, tanpa penulisan ulang, tanpa normalisasi.
  • Rentang mengikuti node-semver npm, karena spesifikasi SemVer tidak mendefinisikan rentang.
  • Alat ini lebih ketat daripada npm untuk rentang: awalan v atau nol di depan di dalam rentang ditolak, dan sisi kosong pada || adalah kesalahan, bukan "versi apa pun".
  • Bacaan npm yang ditampilkan untuk versi tidak valid berasal dari semver.valid(v, {loose:true}) dan semver.coerce(v). Itu hanya informasi - tidak pernah menjadi kelulusan.
  • Posisi menghitung titik kode dan mulai dari 1 di antarmuka, dari 0 di JSON.

Cara menggunakan

  1. Tempel versi seperti 1.2.3-beta.1+build.5 ke bidang kiri. Semua yang di bawahnya diperbarui saat Anda mengetik - tidak ada tombol yang perlu ditekan.
  2. Opsional, tempel rentang npm seperti ^1.2.0 di kanan untuk melihat hubungan antara versi dan rentang.
  3. Baca lencananya dulu: valid atau tidak, dan jika tidak, aturan mana yang rusak di karakter mana.
  4. Centang Sertakan prarilis bila Anda ingin bacaan includePrerelease npm untuk rentang tersebut.
  5. Buka Hasil JSON untuk menyalin atau mengunduh daftar masalah lengkap.

Contoh pengerjaan

Versi + rentang

1.2.3-beta.1+build.5  ^1.2.0

Hasil

SemVer valid (MAJOR 1, MINOR 2, PATCH 3, prarilis beta.1, build build.5). ^1.2.0 diperluas menjadi >=1.2.0 <2.0.0-0, batas [1.2.0, 2.0.0). Putusan: tidak terpenuhi - set tidak memiliki komparator prarilis untuk 1.2.3.

Centang Sertakan prarilis dan pasangan yang sama menjadi terpenuhi.

Batasan

  • Putusannya adalah SemVer 2.0.0 ketat, jadi v1.2.3 dan 1.2.3-01 ditolak meskipun mode longgar npm menerima atau menulis ulangnya.
  • Rentang hanya mengikuti node-semver npm - git describe, Cargo, PEP 440, dan versi modul Go di luar cakupan.
  • Tanpa pencarian registri: alat tidak dapat memberi tahu versi mana yang benar-benar akan dipasang oleh ^1.2.0.
  • Satu versi dan satu rentang per waktu - tanpa daftar batch, pengurutan, perbandingan berpasangan, atau pratinjau kenaikan versi.
  • Angka inti di atas Number.MAX_SAFE_INTEGER ditandai dan dibandingkan sebagai teks, tidak pernah dikonversi ke angka JS.
  • Tidak ada yang keluar dari halaman: tanpa jaringan, penyimpanan, atau parameter URL - muat ulang menghapus semuanya.

Pembantu pengembang lain yang berjalan sepenuhnya di peramban Anda.