Kiểm tra SemVer
Kiểm tra phiên bản ngữ nghĩa và phân tích khoảng.
Phiên bản
- MAJOR
- MINOR
- PATCH
- Tiền phát hành
- Siêu dữ liệu build
Khoảng
Kết quả JSON
Thế nào là một phiên bản
Ngữ pháp SemVer 2.0.0 nghiêm ngặt. Ba số là số nguyên ASCII không âm, không có số 0 đứng đầu.
- MAJOR.MINOR.PATCH
- thay đổi lớn / tương thích / sửa lỗi
- 1.2.3-alpha.1
- bản tiền phát hành, xếp dưới 1.2.3
- 1.2.3+build.5
- siêu dữ liệu build, bỏ qua khi so sánh thứ tự
- 1.2.3-0.3
- định danh tiền phát hành dạng số được so sánh như số
- v1.2.3
- không phải phiên bản ngữ nghĩa (FAQ của đặc tả)
- 01.2.3
- không hợp lệ: số 0 đứng đầu
- 1.2.3-01
- không hợp lệ: số tiền phát hành có 0 đứng đầu
- 1.2.3+0.09
- hợp lệ: siêu dữ liệu build có thể có 0 đứng đầu
Toán tử khoảng
- 1.2.3
- đúng phiên bản này
- ^1.2.3
- tương thích: >=1.2.3 <2.0.0-0
- ~1.2.3
- chỉ bản vá: >=1.2.3 <1.3.0-0
- >=1.2.3 <2.0.0
- AND các bộ so sánh trong một bộ
- 1.2.3 - 2.0.0
- khoảng bao gồm hai đầu, cần dấu cách hai bên
- 1.2.x / 1.x / *
- phiên bản một phần và ký tự đại diện
- a || b
- hợp: một trong hai bộ có thể khớp
- ~>1.2.3
- bí danh lịch sử npm, xử lý như ~1.2.3
npm điền phiên bản một phần thế nào
Đã kiểm chứng với node-semver; hậu tố -0 là dấu gửi của npm để loại bản tiền phát hành của dãy kế tiếp.
| Khoảng | Mở rộng |
|---|---|
| ^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 |
Thứ tự bản tiền phát hành
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
Định danh số so sánh như số và xếp dưới định danh chữ-số; tiền tố ngắn hơn xếp thấp hơn. Siêu dữ liệu build không bao giờ ảnh hưởng.
Lỗi thường gặp
Những chuỗi này dán thẳng từ package.json và nhật ký chat.
- "1.2.3",
- Dấu ngoặc kép và dấu phẩy đi kèm từ package.json - chỉ dán phiên bản.
- v1.2.3
- Thẻ Git có v, phiên bản ngữ nghĩa thì không.
- 1.2
- Hai số là một khoảng, không phải phiên bản.
- 1.2.3-01
- Chế độ loose của npm đọc thành 1.2.3-1 và âm thầm ghi lại.
Dùng bộ quy tắc nào
- Kết luận về chuỗi phiên bản theo SemVer 2.0.0 nghiêm ngặt - không chế độ loose, không ghi lại, không chuẩn hóa.
- Khoảng theo npm node-semver, vì đặc tả SemVer không định nghĩa khoảng.
- Công cụ này nghiêm ngặt hơn npm về khoảng: tiền tố v hoặc số 0 đứng đầu bên trong khoảng bị từ chối, và phía trống của || là lỗi thay vì "mọi phiên bản".
- Cách npm đọc một phiên bản không hợp lệ lấy từ semver.valid(v, {loose:true}) và semver.coerce(v). Chỉ để tham khảo - không bao giờ là đạt.
- Vị trí đếm theo code point và bắt đầu từ 1 trong giao diện, từ 0 trong JSON.
Cách sử dụng
- Dán một phiên bản như 1.2.3-beta.1+build.5 vào ô bên trái. Mọi thứ bên dưới cập nhật khi bạn nhập - không có nút để nhấn.
- Tùy chọn dán một khoảng npm như ^1.2.0 vào ô bên phải để xem phiên bản và khoảng liên hệ thế nào.
- Đọc huy hiệu trước: hợp lệ hay không, và nếu không thì quy tắc nào bị vi phạm tại ký tự nào.
- Tick Bao gồm bản tiền phát hành khi bạn muốn cách đọc includePrerelease của npm cho khoảng.
- Mở rộng kết quả JSON để sao chép hoặc tải toàn bộ danh sách vấn đề.
Ví dụ đã giải
Phiên bản + khoảng
1.2.3-beta.1+build.5 ^1.2.0
Kết quả
SemVer hợp lệ (MAJOR 1, MINOR 2, PATCH 3, tiền phát hành beta.1, build build.5). ^1.2.0 mở rộng thành >=1.2.0 <2.0.0-0, giới hạn [1.2.0, 2.0.0). Kết luận: không thỏa mãn - bộ không có bộ so sánh tiền phát hành cho 1.2.3.
Tick Bao gồm bản tiền phát hành và cùng cặp đó trở thành thỏa mãn.
Giới hạn
- Kết luận theo SemVer 2.0.0 nghiêm ngặt, nên v1.2.3 và 1.2.3-01 bị từ chối dù chế độ loose của npm chấp nhận hoặc ghi lại chúng.
- Khoảng chỉ theo npm node-semver - git describe, Cargo, PEP 440 và phiên bản module Go nằm ngoài phạm vi.
- Không tra registry: công cụ không cho biết ^1.2.0 thực sự sẽ cài phiên bản nào.
- Mỗi lần một phiên bản và một khoảng - không danh sách hàng loạt, không sắp xếp, không so sánh cặp, không xem trước tăng phiên bản.
- Số lõi vượt Number.MAX_SAFE_INTEGER được đánh dấu và so sánh dạng văn bản, không bao giờ chuyển thành số JS.
- Không có gì rời khỏi trang: không mạng, không lưu trữ, không tham số URL - tải lại sẽ xóa mọi thứ.
Công cụ liên quan
Các trợ giúp nhà phát triển khác chạy hoàn toàn trong trình duyệt.