2013-09-24 90 views
97

Tôi có dòng này trong tập tin composer.json tôi:Dấu ngã (~) có nghĩa gì trong tệp composer.json của tôi?

"require": { 
    ... 
    "friendsofsymfony/user-bundle": "[email protected]", 
    ... 
}, 

không dấu ngã ~ trong [email protected] chính xác nghĩa là gì? Đó có phải là trình giữ chỗ và luôn luôn tìm nạp các mục con như 1.2.0, 2.2.0, 3.2.0 và như vậy không? Không có ý nghĩa (và sẽ được thực hiện bởi ký tự đại diện *).

composer.json documentation không nói gì về dấu ngã.

Tôi hỏi vì tôi vừa đọc về một số security issue in the Symfony blog và họ khuyên bạn nên nâng cấp lên phiên bản 1.3.3. Nhưng tìm ra phiên bản của FOSUserBundle không phải là dễ dàng (tôi không thể tìm thấy một tập tin có chứa phiên bản).

Trả lời

123

Dấu ngã nghĩa là lầ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.

Lời giải thích đầy đủ là tại Tilde Version Range docs page:

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

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

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

+65

Một nguyên tắc-of-thumb cách đơn giản tôi muốn đặt nó là ~ cho phép chữ số cuối cùng đi lên. ví dụ. '~ 2.2' có nghĩa là 2.2 và bất kỳ 2.x nào trong đó x là 2 hoặc cao hơn. '~ 2.1.3' trên cũng là bất kỳ 2.1.x trong đó x là 3 hoặc cao hơn. – Seldaek

+1

'~ 2.0' khác với' 2. * 'như thế nào? Nó chỉ hữu ích nếu chữ số cuối cùng không phải là 0? – Jesse

+18

~ 2.0 và 2. * có cùng 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

Tilde toá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 sơ đồ semantic versioning.

Semantic versioning là thêm một hướng dẫn đánh giá là next significant release.

Đối Composer, toán tử này có nghĩa là để cho phép 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 lớn (có thể không tương thích ngược) trong khi cài đặt cập nhật.

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

Điểm Uy Tín: http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php