เครื่องหมายทิลเดอ (~) ในไฟล์ composer.json ของฉันหมายถึงอะไร


115

ฉันมีบรรทัดนี้ในไฟล์ composer.json ของฉัน:

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

อะไรตัวหนอน~ใน ~2.0@devว่าหมายความว่าอย่างไร เป็นตัวยึดตำแหน่งและมักจะดึงการโค่นล้มเช่น1.2.0 , 2.2.0, 3.2.0และอื่น ๆ ? ไม่สมเหตุสมผล (และจะทำโดย*ตัวแทน)

เอกสาร composer.jsonไม่ได้บอกอะไรเกี่ยวกับตัวหนอน

ฉันถามเพราะฉันเพิ่งอ่านเกี่ยวกับปัญหาด้านความปลอดภัยในบล็อก Symfonyและพวกเขาแนะนำให้อัปเกรดเป็นเวอร์ชัน 1.3.3 แต่การหาเวอร์ชันของ FOSUserBundle นั้นไม่ใช่เรื่องง่าย (ฉันไม่พบไฟล์ที่มีเวอร์ชัน)

คำตอบ:


142

หนอนหมายถึงการเปิดตัวต่อไปอย่างมีนัยสำคัญ ในกรณีของคุณเทียบเท่ากับ>= 2.0, < 3.0.

คำอธิบายฉบับเต็มอยู่ที่หน้าเอกสาร Tilde Version Range :

~ผู้ประกอบการจะมีการอธิบายที่ดีที่สุดโดยยกตัวอย่างเช่น: ~1.2เทียบเท่ากับ>=1.2 <2.0.0ในขณะที่เทียบเท่ากับ~1.2.3>=1.2.3 <1.3.0

อีกวิธีในการดูคือการใช้~ระบุเวอร์ชันขั้นต่ำ แต่อนุญาตให้ตัวเลขสุดท้ายที่ระบุขึ้นไป

ความคิดเห็นด้านล่างของ Seldeak เป็นคำอธิบายสรุปง่ายๆของเอกสาร Composer


73
วิธีง่ายๆที่ฉันชอบใส่คือ ~ อนุญาตให้ตัวเลขสุดท้ายขึ้นไป เช่น~2.2หมายถึง 2.2 และ 2.x ใด ๆ โดยที่ x เป็น 2 หรือสูงกว่า ~2.1.3บนยังเป็น 2.1.x ใด ๆ โดยที่ x คือ 3 หรือสูงกว่า
Seldaek

2
เป็นวิธีการที่~2.0แตกต่างกันเพื่อ2.*? จะมีประโยชน์ถ้าตัวเลขสุดท้ายไม่ใช่ 0?
Jesse

24
~ 2.0 และ 2. * เหมือนกัน แต่ ~ 2.3 และ 2. * แตกต่างกันเนื่องจาก ~ 2.3 ไม่อนุญาตให้ใช้เวอร์ชันต่ำกว่า 2.3 ในขณะที่ 2. * อนุญาตให้ใช้ 2.0, 2.1, 2.2 เป็นต้น
AlterPHP

2

Tildeตัวดำเนินการมีประโยชน์สำหรับโครงการที่สร้างเวอร์ชันไลบรารีโดยใช้semantic versioningแบบแผน

Semantic versioning เป็นแนวทางที่ใช้ประเมินกับไฟล์ next significant release .

สำหรับ Composer ตัวดำเนินการนี้หมายถึงการอนุญาตการเผยแพร่เล็กน้อย (ซึ่งอาจรวมถึงแพตช์) โดยไม่อนุญาตให้ใช้เวอร์ชันหลัก (ซึ่งอาจไม่สามารถใช้งานร่วมกันได้แบบย้อนหลัง) ในขณะที่ติดตั้งและอัปเดตการปรับปรุง

ตัวอย่างเช่น~4.1จะอนุญาตเวอร์ชันโครงการ>=4.1แต่<5.0แต่

เครดิต: http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php


0

ตัวหนอน~ใน ~2.0@devว่าค่าเฉลี่ยขึ้นไปสำหรับรุ่นทันที:

ตัวอย่างเช่น :

หากเรามี~2.0@devมันจะอัปเดตเวอร์ชันถัดไปทันที => ~2.x@dev

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.