Bộ tính toán SemVer

Quản lý phiên bản ngữ nghĩa gồm năm thành phần: MAJOR.MINOR.PATCH, cùng các hậu tố tùy chọn là -prerelease+build. Bộ tính toán này nhận một chuỗi phiên bản, kiểm tra tính hợp lệ theo quy tắc ngữ pháp semver 2.0.0, tách nó thành các thành phần và hiển thị các phiên bản major, minor, patch và prerelease (-rc.1) tiếp theo cạnh nhau.

Cách cập nhật phiên bản

  1. 1

    Dán phiên bản hiện tại

    Hãy chấp nhận các mẫu `1.2.3`, `1.2.3-rc.1`, `2.0.0-alpha+exp.sha.5114f85` và các mẫu khác của phiên bản semver 2.0.0.

  2. 2

    Đọc các phần đã phân tích

    Công cụ tách chuỗi thành major, minor, patch, prerelease và siêu dữ liệu bản dựng để bạn xác nhận rằng nó được phân tích đúng như mong đợi.

  3. 3

    So sánh các phiên bản tiếp theo

    Công cụ hiển thị major, minor và patch tiếp theo cùng lúc, cùng với một ứng viên prerelease (`-rc.1`). Nâng minor sẽ đặt lại patch về 0; nâng major sẽ đặt lại cả minor và patch.

  4. 4

    Sao chép phiên bản mới

    Chọn phiên bản phù hợp với thay đổi của bạn và dùng nó trong `package.json`, `Cargo.toml`, thẻ git hoặc ghi chú phát hành của bạn.

Công cụ này hiển thị gì

Đối với một phiên bản như 1.2.3, công cụ sẽ hiển thị bốn phiên bản tiếp theo được đề xuất:

Nâng cấp 1.2.3 chuyển thành
major 2.0.0
minor 1.3.0
patch 1.2.4
prerelease 1.2.4-rc.1

Nâng minor sẽ đặt lại patch về 0; nâng major sẽ đặt lại cả minor và patch về 0. Đề xuất prerelease đánh dấu patch tiếp theo là ứng viên phát hành. Các công cụ dòng lệnh như npm version cung cấp thêm nhiều thao tác khác (premajor, preminor, prepatch, và tăng prerelease tại chỗ như 1.2.3-beta.1 chuyển thành 1.2.3-beta.2) nếu bạn cần chúng trong một script phát hành.

Các quy tắc ưu tiên mà bạn sẽ gặp phải

  • Phiên bản tiền phát hành có thứ tự ưu tiên thấp hơn so với phiên bản chính thức: 1.0.0-rc.1 < 1.0.0.
  • Các mã định danh số được so sánh theo giá trị số; các mã chữ số được so sánh theo bảng chữ cái: 1.0.0-alpha.2 < 1.0.0-alpha.11.
  • Siêu dữ liệu bản dựng (+sha.abc) bị bỏ qua về thứ tự ưu tiên. Các phiên bản 1.0.0+202401011.0.0+20250101 có cùng mức độ ưu tiên.
  • Chữ số 0 đứng đầu trong mã định danh số học là không hợp lệ. 1.0.0-rc.01 không phải là semver; hãy sử dụng rc.1.

Bảng hướng dẫn các giá trị phạm vi

  • ^1.2.3, bất kỳ phiên bản nào từ 1.2.3 trở lên nhưng dưới 2.0.0 (phải thuộc cùng một phiên bản chính).
  • ~1.2.3, bất kỳ phiên bản nào từ 1.2.3 trở lên nhưng dưới 1.3.0 (giữ nguyên phiên bản con tương ứng).
  • >=1.2.3 <2.0.0, phạm vi rõ ràng.
  • 0.x là trường hợp đặc biệt: npm coi ^0.2.3 như >=0.2.3 <0.3.0 vì phiên bản trước 1.0 được xem là không ổn định.

Khi nào nên nâng cấp phiên bản chính

Hãy nâng major cho bất kỳ thay đổi nào phá vỡ những người dùng ở hạ nguồn: gỡ bỏ API công khai, thay đổi chữ ký hàm, thay đổi hành vi mặc định hoặc đổi tên khóa cấu hình. Minor chỉ dành cho các thay đổi bổ sung. Patch dùng để khắc phục lỗi mà không làm thay đổi giao ước (hợp đồng).

Câu hỏi thường gặp

Số 01.2.3 không hợp lệ. Mỗi mã định danh số phải là một số nguyên không âm và không có chữ số 0 ở đầu, ngoại trừ giá trị văn bản 0.

Hãy dùng một lần nâng patch từ phiên bản 1.0.0-rc.N gần nhất – semver coi đây là quá trình chuyển từ phiên bản tiền phát hành sang phiên bản chính thức. Hoặc bạn cũng có thể thiết lập phiên bản một cách rõ ràng và gắn thẻ tương ứng.

Không. Siêu dữ liệu bản dựng nằm sau + và không được tính vào thứ tự ưu tiên. Loại “Prerelease” xuất hiện sau - và có thứ bậc thấp hơn so với phiên bản chính thức. Hầu hết các cơ sở đăng ký đều cho phép cả hai loại này tồn tại đồng thời, ví dụ như trường hợp 1.2.3-rc.1+build.77.

Đúng vậy – tiêu chuẩn semver không yêu cầu các phiên bản phải liên tiếp nhau. Việc chuyển trực tiếp từ phiên bản 3.x sang phiên bản 5.x là được phép, mặc dù hầu hết các nhóm đều sử dụng biện pháp này để báo hiệu một thay đổi đặc biệt lớn và gây ảnh hưởng mạnh.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác