วิธีลบการอ้างอิงที่ไม่ได้ใช้ออกจากผู้แต่ง


209

ฉันติดตั้งแพ็คเกจด้วยผู้แต่งและติดตั้งแพ็คเกจอื่น ๆ เป็นการอ้างอิง

ตอนนี้ฉันถอนการติดตั้งแพ็คเกจหลักด้วยcomposer remove packageauthor/packagenameแต่การอ้างอิงเก่าทั้งหมดไม่ได้ถูกลบออก ฉันคาดว่านักแต่งเพลงจะล้างข้อมูลและเก็บเฉพาะแพ็คเกจที่จำเป็นตามcomposer.jsonและการอ้างอิงของพวกเขาเท่านั้น

ฉันจะบังคับให้นักแต่งเพลงทำความสะอาดและลบแพ็คเกจที่ไม่ได้ใช้ทั้งหมดได้อย่างไร

คำตอบ:


375

วิธีที่เหมาะสมในการทำเช่นนี้คือ:

composer remove jenssegers/mongodb --update-with-dependencies

ฉันต้องยอมรับธงที่นี่ไม่ค่อยชัดเจนว่ามันจะทำอะไร

ปรับปรุง

composer remove jenssegers/mongodb

ตั้งแต่v1.0.0-beta2 --update-with-dependenciesเป็นค่าเริ่มต้นและไม่จำเป็นต้องใช้อีกต่อไป


ขอบคุณที่ @Yehosef สำหรับการเริ่มต้นปัญหาบน GitHub ที่แก้ปัญหาให้ แต่เนื่องจากเขาไม่ได้อัปเดตคำตอบของเขาฉันตัดสินใจที่จะเขียนของตัวเองทุกคนสะดวกสบาย
เดนิส Pshenov

ขอบคุณฉันไม่ได้จบการสนทนา
Lorenz Meyer

3
สิ่งหนึ่งที่ควรทราบ: หากคุณได้แล้วcomposer remove …แต่ลืม--update-with-dependenciesจนกว่าคุณจะเจอคำถามนี้ - สายที่ตามมาcomposer removeจะไม่ฆ่าการพึ่งพาทั้งหมด คุณจะต้องย้อนกลับไปแต่งเพลงinstallแล้วcomposer remove --update-with-dependencies
ไมค์ G

ตอนนี้ฉันได้รับข้อความต่อไปนี้:You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies
Pathros

4
วิธีการเกี่ยวกับการล้างหลังจากลบแพคเกจ? - นั่นคือที่คำตอบของ @ LorenzMeyer เข้าไปใน: composer updateยกนิ้วให้กับคำตอบนี้ของ @ LorenzMeyer
Allen Linatoc

29

ในความเป็นจริงมันง่ายมาก

composer update

จะทำทุกอย่างให้คุณ แต่จะอัพเดตแพ็คเกจอื่น ๆ ด้วย

หากต้องการลบแพ็กเกจโดยไม่อัพเดตแพ็กเกจอื่นให้ระบุแพ็กเกจนั้นในคำสั่งตัวอย่างเช่น:

composer update monolog/monolog

จะลบmonolog/monologแพ็คเกจ

อย่างไรก็ตามอาจมีโฟลเดอร์หรือไฟล์เปล่าบางไฟล์ที่ไม่สามารถลบออกโดยอัตโนมัติและต้องถูกลบด้วยตนเอง


8
ส่วนที่โชคร้ายเกี่ยวกับเรื่องนี้คือมันบังคับให้คุณอัปเดตแพคเกจของคุณแทนที่จะเพียงแค่ลบรุ่นเก่า เช่นถ้าฉันมีสองแพ็คเกจ AAA / aaa ~ 1 และรุ่น BBB / bbb ~ 2 และตอนนี้ฉันอยู่ที่รุ่น 1.0 ของ AAA / aaa และพวกเขาเปิดตัว 1.1 แล้วเมื่อฉันลบ BBB / bbb ฉันอัปเดตโดยอัตโนมัติ (ซึ่งอาจไม่ เป็นสิ่งที่ฉันตั้งใจจะทำ .. )
Yehosef

คุณพูดถูก หากคุณมีทางออกที่ดีกว่าให้กลับมาโพสต์เป็นคำตอบ
Lorenz Meyer

3
ฉันยังไม่ได้ - ฉันแค่ต้องการชี้ให้เห็นถึงข้อผิดพลาดของวิธีการนี้สำหรับคนอื่น
Yehosef

มันควรจะเป็นธงในการติดตั้งผู้แต่ง .. สิ่งที่ต้องการ--prune
Yehosef

1
ถ้าคุณชอบความคิดที่คุณสามารถลงคะแนนได้ - github.com/composer/composer/issues/3751
Yehosef

20

คำสั่งต่อไปนี้จะทำแบบเดียวกันอย่างสมบูรณ์

rm -rf vendor

composer install 

2
นี่น่าจะเป็นตัวเลือกที่ดีที่สุด ลบไดเรกทอรีผู้ขายและปล่อยให้นักแต่งเพลงดึงทุกอย่างออกมาใหม่
Machavity

4
นี้เป็น NPM "บันทึกของฉันในวัน" สไตล์;)
r34

composer installจะลบแพ็คเกจที่ไม่ได้ใช้โดยอัตโนมัติ
Yidir

10

เพิ่งรันcomposer install- มันจะทำให้vendorไดเรกทอรีของคุณสะท้อนการอ้างอิงในcomposer.lockไฟล์

ในคำอื่น ๆ - มันจะลบผู้ขายใด ๆ ที่หายไปcomposer.lockค่ะ

โปรดอัปเดตผู้แต่งเองก่อนที่จะเรียกใช้

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