Dấu ngã (~) trong tệp composer.json của tôi có nghĩa là gì?


115

Tôi có dòng này trong tệp composer.json của mình:

"require": {
    ...
    "friendsofsymfony/user-bundle": "~2.0@dev",
    ...
},

Không dấu ngã gì ~trong ~2.0@devchính xác nghĩa là gì? Là một giữ chỗ và sẽ luôn lấy subversions như 1.2.0, 2.2.0, 3.2.0và vân vân? Không có ý nghĩa (và sẽ được thực hiện bởi *ký tự đại diện).

Các tài liệu composer.json không nói bất cứ điều gì về những dấu ngã.

Tôi đang hỏi vì tôi vừa đọc về một vấn đề bảo mật trên blog Symfony và họ khuyên bạn nên nâng cấp lên phiên bản 1.3.3. Nhưng việc tìm ra phiên bản của FOSUserBundle không dễ dàng như vậy (tôi không thể tìm thấy tệp có chứa phiên bản này).

Câu trả lời:


142

Dấu ngã có nghĩa là bản phát hành quan trọng tiếp theo . Trong trường hợp của bạn, nó tương đương với >= 2.0, < 3.0.

Giải thích đầy đủ có tại trang tài liệu của Phạm vi Phiên bản Tilde :

Các ~nhà điều hành được giải thích tốt nhất bằng ví dụ: ~1.2tương đương với >=1.2 <2.0.0, trong khi ~1.2.3tương đương với >=1.2.3 <1.3.0.

Một cách khác để xem xét nó là sử dụng ~chỉ định phiên bản tối thiểu, nhưng cho phép chữ số cuối cùng được chỉ định tăng lên.

Nhận xét dưới đây của Seldeak là lời giải thích tổng hợp đơn giản về tài liệu của Nhà soạn nhạc.


73
Một cách đơn giản theo quy tắc ngón tay cái mà tôi muốn đặt đó là dấu ~ cho phép chữ số cuối cùng tăng lên. Ví dụ: ~2.2nghĩa là 2.2 và 2.x bất kỳ trong đó x là 2 hoặc cao hơn. ~2.1.3trên cũng là 2.1.x bất kỳ trong đó x là 3 hoặc cao hơn.
Seldaek

2
Làm thế nào là ~2.0khác nhau 2.*? Nó chỉ hữu ích nếu chữ số cuối cùng không phải là 0?
Jesse

24
~ 2.0 và 2. * giống nhau NHƯNG ~ 2.3 và 2. * khác nhau vì ~ 2.3 không cho phép các phiên bản dưới 2.3 trong khi 2. * cho phép 2.0, 2.1, 2.2, v.v.
AlterPHP

2

Tildetoán tử hữu ích cho các dự án phiên bản thư viện của họ bằng cách sử dụng semantic versioninglược đồ.

Semantic versioninglà một hướng dẫn nhiều hơn để đánh giá next significant release.

Đối với Composer, nhà điều hành này có nghĩa là cho phép các bản phát hành nhỏ (có thể bao gồm các bản vá lỗi) mà không cho phép một phiên bản chính (có thể không tương thích ngược) trong khi cài đặtcập nhật .

Ví dụ: ~4.1sẽ cho phép các phiên bản dự án >=4.1nhưng <5.0.

Tín dụng: http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php


0

Các dấu ngã ~trong ~2.0@dev chính xác trung bình đi lên cho phiên bản trực tiếp:

Ví dụ :

Nếu chúng ta có ~2.0@devnó, hãy lên ngay phiên bản tiếp theo => ~2.x@dev

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.