จะติดตั้งแพ็คเกจเฉพาะเวอร์ชั่นด้วยการใช้ Composer ได้อย่างไร?


345

ฉันกำลังพยายามติดตั้งแพ็คเกจรุ่นที่ระบุโดยใช้ Composer ฉันพยายามcomposer installแล้วcomposer requireแต่พวกเขากำลังติดตั้งแพ็คเกจล่าสุด จะทำอย่างไรถ้าฉันต้องการรุ่นที่เก่ากว่า


ได้อ่านคำตอบนี้stackoverflow.com/questions/15212381/ …
KevinOrfas

คำตอบ:


602

composer require vendor/package:version

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

composer require refinery29/test-util:0.10.2


6
ฟังก์ชัน ^ และ ~ ในหมายเลขเวอร์ชันคืออะไร
Dedi Ananto

2
คุณสามารถหาคำตอบได้ที่นี่stackoverflow.com/a/22345808/1522019
alucic

1
@DediAnanto โปรดดูที่ลิงค์นี้จากแพคเกจ NPM โต้ตอบที่คล้ายกัน stackoverflow.com/questions/22343224/…
okandas

110

เพิ่มเครื่องหมายคำพูดคู่เพื่อใช้ตัวดำเนินการคาเร็ตในหมายเลขเวอร์ชัน

composer require middlewares/whoops "^0.4"

3
ฉันไม่เห็นจุดในเวลาที่คุณสามารถส่งชื่อแพคเกจและรุ่นเป็นอาร์กิวเมนต์แยกสอง
x-yuri

1
@ x-yuri ชื่อแพคเกจและเวอร์ชันที่เป็นอาร์กิวเมนต์แยกใช้งานได้กับฉันโดยใช้นักแต่งเพลง 1.5.1
bryonbean

ในขณะที่ในทางเทคนิคนี่ไม่ใช่คำตอบที่ "ถูกต้อง" สำหรับคำถามของ OP แต่อาจเป็นประโยชน์สำหรับคนส่วนใหญ่
ศาล Rich

19

เพียงใช้ php composer.phar ต้องการ

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

php composer.phar require doctrine/mongodb-odm-bundle 3.0

มีให้พร้อมกับการติดตั้ง

https://getcomposer.org/doc/03-cli.md#require https://getcomposer.org/doc/03-cli.md#install


สำหรับบันทึกที่เพิ่มข้อ จำกัด ที่กำหนดเองไม่สามารถใช้ได้กับinstall- requireเฉพาะกับ หากคุณหวังว่าจะเปลี่ยนเป็นเวอร์ชันเฉพาะและเช็คอินcomposer.lockไฟล์คุณสามารถทำได้ แต่คุณต้องใช้composer requireแล้วเปลี่ยนการเปลี่ยนแปลงเป็นcomposer.jsonภายหลัง
mindplay.dk

รุ่นเป็นอาร์กิวเมนต์ที่แยกจากกัน? นั่นเคยมีมาไหม?
x-yuri

10

ตามที่ @alucic กล่าวถึงให้ใช้:

composer require vendor/package:version

หรือคุณสามารถใช้:

composer update vendor/package:version

คุณอาจจะตรวจสอบการโพสต์นี้ StackOverflow เกี่ยวกับความแตกต่างระหว่างนักแต่งเพลงที่ติดตั้งและปรับปรุงการแต่งเพลง

เกี่ยวข้องกับคำถามเกี่ยวกับหมายเลขรุ่นคุณสามารถตรวจสอบเอกสารประกอบของนักแต่งเพลงในรุ่นแต่สั้น ๆ :

  • Tilde Version Range ( ~ ) - ~ 1.2.3 เทียบเท่ากับ> = 1.2.3 < 1.3.0
  • Caret Version Range ( ^ ) - ^ 1.2.3 เทียบเท่ากับ> = 1.2.3 < 2.0.0

ดังนั้นด้วยTildeคุณจะได้รับการอัปเดตอัตโนมัติของโปรแกรมแก้ไข แต่รุ่นรองและรุ่นหลักจะไม่ได้รับการอัปเดต อย่างไรก็ตามหากคุณใช้Caretคุณจะได้รับ Patch และเวอร์ชั่นรอง แต่คุณจะไม่ได้รับเวอร์ชันที่สำคัญ

Tilde Version ถือว่าเป็นวิธีที่ "ปลอดภัยกว่า" แต่หากคุณใช้การพึ่งพาที่เชื่อถือได้ (ไลบรารีที่ได้รับการดูแลอย่างดี) คุณไม่ควรมีปัญหาใด ๆ กับ Caret Version (เนื่องจากการเปลี่ยนแปลงเล็กน้อยไม่ควรทำลายการเปลี่ยนแปลง


5

สมมติว่าคุณต้องการติดตั้ง Laravel Collective ปัจจุบันเป็นรุ่น 6.x แต่คุณต้องการรุ่น 5.8 คุณสามารถเรียกใช้คำสั่งต่อไปนี้:

composer require "laravelcollective/html":"^5.8.0"

ตัวอย่างที่ดีแสดงไว้ที่นี่ในเอกสารประกอบ: https://laravelcollective.com/docs/5.5/html


0

ในของcomposer.jsonคุณคุณสามารถใส่:

{
    "require": {
        "vendor/package": "version"
    }
}

จากนั้นเรียกใช้composer installหรือจากไดเรกทอรีที่มีcomposer update composer.jsonบางครั้งสำหรับฉันนักแต่งเพลงเป็น hinky ดังนั้นฉันจะเริ่มต้นด้วยcomposer clear-cache; rm -rf vendor; rm composer.lockก่อนcomposer installเพื่อให้แน่ใจว่ามันได้รับสิ่งใหม่


แน่นอนเช่นเดียวกับคำตอบอื่น ๆ ที่ชี้ให้เห็นคุณสามารถเรียกใช้สิ่งต่อไปนี้จากเทอร์มินัล:

composer require vendor/package:version

และในการกำหนดเวอร์ชัน:
- บทความเวอร์ชันทางการของนักแต่งเพลง
- การค้นหา Ecosia

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