SemVer Calculator

Semantic Versioning terdiri dari lima komponen utama: MAJOR, MINOR, dan PATCH, ditambah sufiks opsional -prerelease dan +build. Kalkulator ini menerima string versi, memvalidasinya berdasarkan aturan tata bahasa semver 2.0.0, memecahnya menjadi komponen-komponennya, dan menampilkan versi major, minor, patch, dan prerelease (-rc.1) berikutnya secara berdampingan.

Cara mengubah versi

  1. 1

    Tempelkan versi terbaru

    Menerima formulir `1.2.3`, `1.2.3-rc.1`, `2.0.0-alpha+exp.sha.5114f85`, serta formulir semver 2.0.0 lainnya.

  2. 2

    Baca bagian yang diurai

    Alat ini memecah string menjadi major, minor, patch, prerelease, dan metadata build sehingga Anda dapat memastikan bahwa string tersebut terbaca sesuai harapan.

  3. 3

    Bandingkan versi berikutnya

    Alat ini menampilkan major, minor, dan patch berikutnya sekaligus, ditambah kandidat prerelease (`-rc.1`). Meningkatkan minor mengatur ulang patch menjadi 0; meningkatkan major mengatur ulang baik minor maupun patch.

  4. 4

    Salin versi baru

    Pilih versi yang sesuai dengan perubahan Anda dan gunakan dalam `package.json`, `Cargo.toml`, tag git, atau catatan rilis Anda.

Yang ditampilkan kalkulator ini

Untuk versi seperti 1.2.3, alat ini menampilkan empat versi berikutnya yang disarankan:

Peningkatan 1.2.3 berubah menjadi
major 2.0.0
minor 1.3.0
patch 1.2.4
prerelease 1.2.4-rc.1

Meningkatkan minor mengatur ulang patch menjadi 0; meningkatkan major mengatur ulang baik minor maupun patch menjadi 0. Saran prerelease menandai patch berikutnya sebagai kandidat rilis. Alat baris perintah seperti npm version menambahkan lebih banyak operasi (premajor, preminor, prepatch, dan peningkatan prerelease di tempat seperti 1.2.3-beta.1 menjadi 1.2.3-beta.2) jika Anda membutuhkannya dalam skrip rilis.

Aturan prioritas yang akan Anda hadapi

  • Versi pra-rilis memiliki prioritas yang lebih rendah dibandingkan versi rilis: 1.0.0-rc.1 < 1.0.0.
  • Identifikasi numerik dibandingkan secara numerik; identifikasi alfabetik-numerik dibandingkan secara leksikal: 1.0.0-alpha.2 < 1.0.0-alpha.11.
  • Metadata pembuatan (+sha.abc) diabaikan dalam hal prioritas. 1.0.0+20240101 dan 1.0.0+20250101 merupakan versi yang setara.
  • Angka nol di awal identifikasi numerik tidak valid. 1.0.0-rc.01 bukan semver; gunakan rc.1.

Daftar Singkat Rentang Operasi

  • ^1.2.3, versi mana pun yang bernomor ≥1.2.3 dan <2.0.0 (tetap berada pada versi utama yang sama).
  • ~1.2.3, versi mana pun yang bernilai ≥1.2.3 dan <1.3.0 (tetap menggunakan versi minor yang sama).
  • >=1.2.3 <2.0.0, rentang eksplisit.
  • 0.x bersifat khusus: npm memperlakukan ^0.2.3 sebagai >=0.2.3 <0.3.0 karena versi sebelum 1.0 dianggap tidak stabil.

Kapan harus melakukan bump major

Perubahan besar (bump major) digunakan untuk perubahan yang merugikan konsumen akhir: penghapusan API publik, perubahan tanda tangan fungsi, perubahan perilaku default, atau penggantian nama kunci konfigurasi. Perubahan kecil (minor) hanya untuk penambahan fitur baru. Sementara itu, patch digunakan untuk memperbaiki bug tanpa mengubah spesifikasi atau kontrak sistem.

Pertanyaan yang Sering Diajukan

Nomor 01.2.3 tidak valid. Setiap identifikasi numerik harus berupa bilangan bulat non-negatif tanpa angka nol di awal, kecuali nilai literal 0.

Gunakan patch bump dari versi 1.0.0-rc.N terakhir Anda; semver akan menganggap hal tersebut sebagai transisi dari versi pra-rilis ke versi rilis. Alternatifnya, tetapkan versi secara eksplisit dan tambahkan tagnya.

Tidak. Metadata build muncul setelah + dan diabaikan dalam penentuan urutan. Prerelease muncul setelah - serta memiliki prioritas yang lebih rendah dibandingkan versi rilis. Sebagian besar registri memungkinkan kedua status tersebut muncul secara bersamaan, seperti pada 1.2.3-rc.1+build.77.

Ya, semver tidak memerlukan kombinasi versi utama yang berurutan. Beralih langsung dari versi 3.x ke versi 5.x juga diperbolehkan, meskipun sebagian besar tim menggunakan hal ini untuk menandakan perubahan yang sangat signifikan dan mengganggu.

Alat Terkait

Alat ini tersedia dalam bahasa lain