วิธีลบแพ็คเกจออกจาก Laravel โดยใช้ผู้แต่ง


402

วิธีที่ถูกต้องในการลบแพ็คเกจออกจาก Laravel 4 คืออะไร? นานมาแล้วที่ฉันได้ลอง:

  1. นำการประกาศออกจากcomposer.json(ในส่วน "ต้องการ")
  2. ลบนามแฝงคลาสออกจาก app.php
  3. ลบการอ้างอิงใด ๆ ไปยังแพ็คเกจจากรหัสของฉัน :-)
  4. วิ่ง composer update
  5. วิ่ง composer dump-autoload

ไม่ทำงาน! ฉันพลาดอะไรไปรึเปล่า?

บางแพ็กเกจเผยแพร่การกำหนดค่าผ่านทาง "artisan config: publish ... " มีวิธี "เลิกเผยแพร่" หรือไม่

คำตอบ:


594

การรันคำสั่งต่อไปนี้จะลบแพ็กเกจออกจากผู้จำหน่าย (หรือที่ใดก็ตามที่คุณติดตั้งแพ็คเกจ), composer.json และ composer.lock เปลี่ยนผู้ขาย / แพ็คเกจอย่างเหมาะสม

composer remove vendor/package

เห็นได้ชัดว่าคุณจะต้องลบการอ้างอิงไปยังแพ็คเกจนั้นภายในแอป

ฉันกำลังใช้งานนักแต่งเพลงรุ่นต่อไปนี้:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29

13
จากนั้นเรียกใช้composer updateเพื่อลบโฟลเดอร์ผู้จัดจำหน่าย / แพ็คเกจออกจากผู้ขาย
Zeshan

11
@ ZeshanKhattak ผู้อัปเดตผู้อัปเดตจะอัปเดตการอ้างอิงทั้งหมด วิธีออกจากโครงการในสภาวะที่ไม่เสถียร อย่าใช้การอัปเดตผู้แต่งเว้นแต่คุณต้องการอัปเดตการอ้างอิง
zarax

11
composer remove packagenameมันอัปเดตการลบแพ็คเกจออกจาก composer.json และลบโฟลเดอร์แพ็คเกจออกจากผู้ขาย ... laravel - 5.4.24, ผู้แต่ง - 1.4.2

composer remove <package>ดูเหมือนว่านักแต่งเพลงที่มีการติดตั้งแพคเกจที่หายไปหลังจากที่ทำงานโดยอัตโนมัติ ยังไงก็เถอะเพื่อหลีกเลี่ยงที่? ใช้รุ่น 1.7.2
Olle Härstedt

มันควรจะเป็น: นักแต่งเพลงลบ package_name แทน: นักแต่งเพลงลบผู้ขาย / แพคเกจไม่จำเป็นต้องมีผู้ขายเพราะ laravel ตรวจสอบโดยอัตโนมัติในไดเรกทอรีผู้ขายสำหรับแพคเกจ
Prashant

171

ทำงานแล้ว ... ขั้นตอนในการลบแพ็คเกจออกจาก Laravel คือ:

  1. ลบการประกาศออกจาก composer.json (ในส่วน "ต้องการ")
  2. ลบผู้ให้บริการออกจาก "app / config / app.php" (อ้างอิงในอาร์เรย์ "ผู้ให้บริการ")
  3. ลบนามแฝงของคลาสออกจาก "app / config / app.php"
  4. ลบการอ้างอิงใด ๆ ไปยังแพ็คเกจจากรหัสของคุณ :-)
  5. เรียกใช้ "ผู้จัดทำอัปเดตผู้จัดจำหน่าย / ชื่อแพ็คเกจ" วิธีนี้จะลบโฟลเดอร์แพ็คเกจออกจากโฟลเดอร์ "ผู้ขาย" และจะสร้างแผนที่การโหลดอัตโนมัติของผู้แต่ง
  6. ลบไฟล์ที่เผยแพร่ด้วยตนเอง (อ่านความคิดเห็นโดย zwacky)

มันจะลบโฟลเดอร์แพ็คเกจออกจากโฟลเดอร์ "ผู้ขาย"


2
แม้ว่าการยกเลิกการเผยแพร่เนื้อหา / การกำหนดค่าไม่ใช่เรื่องอัตโนมัติ ฉันมักจะลบโฟลเดอร์ผู้ขาย / แพ็คเกจด้วยตนเองใน config / หรือพับลิก /
zwacky

7
ตอนนี้ laravel ควรมาพร้อมกับบางสิ่งเช่น "ลบแพ็คเกจ <package-name>" เพื่อให้ง่ายขึ้น
Chandan Gupta

19
ปัญหาเกี่ยวกับวิธีแก้ไขปัญหานี้คือมันจะอัปเดตแพ็คเกจอื่น ๆ ทั้งหมดซึ่งอาจไม่ใช่สิ่งที่คุณต้องการ
สั่น

3
(1) และ (5) สามารถถูกแทนที่ด้วยการวิ่งcomposer remove vendor/packageฉันคิดว่า
JCarlosR

ขอบคุณคำแนะนำนี้มีประโยชน์ในการลบแพคเกจไม่ทำงาน Igaster / laravel-theme
Jjsg08

59

ใช้คำสั่งต่อไปนี้

composer remove Vendor/Package Name

นั่นคือทั้งหมดที่ ไม่จำเป็นต้องอัปเดตผู้แต่ง ชื่อผู้ขาย / แพ็คเกจเป็นเพียงไดเรกทอรีที่ติดตั้งมาก่อน


1
ฉันทำสิ่งนี้และมันบอกว่าไม่จำเป็นต้องใช้ใน composer.json ดังนั้น 'ละเว้น'
Sweet Chilly Philly

1
composer remove <packageName>ฉันคิดว่าอันนี้เหมาะสำหรับการลบแพ็คเกจใด ๆ ลืมVendor:) ตัวอย่างเช่นcomposer remove laravel/tinker
Shamsul Huda

43

ปกติcomposer removeใช้แบบนี้ก็พอ:

$ composer remove vendor/package

แต่ถ้าแพ็กเกจผู้แต่งถูกลบและไม่ได้ล้างแคชการกำหนดค่าคุณไม่สามารถล้างได้เมื่อคุณลองทำเช่นนั้น

php artisan config:clear

คุณสามารถรับข้อผิดพลาด In ProviderRepository.php line 208:

ไม่พบคลาส 'Laracasts \ Flash \ FlashServiceProvider'

นี่คือจุดจบที่มีมาก่อนเว้นแต่คุณจะลบไฟล์

$rm bootstrap/cache/config.php

และนี่คือ Laravel 5.6 ที่ฉันพูดถึงไม่ใช่ของโบราณ

มันมักจะเกิดขึ้นในการปรับใช้อัตโนมัติเมื่อคุณคัดลอกไฟล์ของรุ่นใหม่ที่ด้านบนของแคชเก่า แม้ว่าคุณจะล้างแคชก่อนที่จะคัดลอก คุณจบลงด้วยแคชเก่าและผู้แต่งใหม่


2
ฉันคิดว่ามันได้รับการแก้ไขใน 5.7
Yevgeniy Afanasyev

1
ด้วย 5.6, bootstrap / cache ของฉันว่างเปล่า ฉันลืมว่าฉันเปลี่ยนเส้นทางแคช (config / cache.php)! การลบไฟล์ในโฟลเดอร์แคชใหม่ช่วยแก้ปัญหาได้!
Aine

2
@YevgeniyAfanasyev นี้ไม่ได้รับการแก้ไขแม้ใน 5.7
Shreyansh Panchal

2
ฉันใช้เวลาเกือบ 3 ชั่วโมงดึงผมออกมา ฉันคิดว่าconfig:clearจะแก้ไขปัญหานี้
Shreyansh Panchal

34

คุณสามารถลบแพ็คเกจใด ๆ เพียงแค่พิมพ์คำสั่ง follwing ในเทอร์มินัลและเพียงแค่ลบผู้ให้บริการและนามแฝงที่คุณให้ไว้เมื่อทำการติดตั้งแพคเกจถ้ามีและอัพเดตผู้แต่ง

composer remove vendor/your_package_name
composer update

1
ในบางครั้งเพื่ออัปเดตการพึ่งพาใหม่คุณต้องอัปเดตผู้แต่ง ฉันคิดว่าไม่มีอันตรายใด ๆ ในการทำงาน
Shahrukh Anwar

18

คุณสามารถทำหนึ่งในสองวิธีต่อไปนี้:

  1. เรียกใช้คำสั่งด้านล่าง (วิธีที่แนะนำมากที่สุดในการลบแพ็คเกจของคุณโดยไม่ต้องอัปเดตแพ็คเกจอื่น ๆ )

    $ composer remove vendor/package

  2. ไปที่ไฟล์ composer.json ของคุณแล้วเรียกใช้คำสั่งด้านล่างมันจะลบแพ็คเกจของคุณ (แต่มันจะอัพเดตแพ็คเกจอื่น ๆ ของคุณด้วย)

    $ composer update


17

ก่อนที่จะลบแพคเกจจากการประกาศ composer.json โปรดลบแคช

php artisan cache:clear  
php artisan config:clear 

ถ้าคุณลืมที่จะลบแคชและคุณได้รับข้อผิดพลาดไม่พบคลาสแล้วโปรดติดตั้งแพคเกจและล้างแคชและลบอีกครั้ง


16

วิธีที่ง่ายที่สุดและง่ายที่สุด

ไวยากรณ์:

composer remove <package>

ตัวอย่าง:

composer remove laravel/tinker

15

หากคุณยังคงได้รับข้อผิดพลาดหลังจากทำตามขั้นตอนข้างต้นทั้งหมดแล้วให้ไปที่โครงการของคุณbootstrap->cache->config.phpลบรายการผู้ให้บริการ & ชื่อแทนออกจากอาร์เรย์แคชด้วยตนเอง


สิ่งนี้ช่วยฉัน
Peter Griffin

1
ผู้จำหน่ายแพคเกจบางรายไม่ตรงตามข้อกำหนดทั้งหมดในการสร้างแพ็คเกจ ด้วยเหตุผลดังกล่าวผู้ขายเหล่านี้จึงcomposer remove vendor/packageไม่สามารถลบรายการแคชได้อย่างเหมาะสม ดังนั้น @Ramjith Ap ถูกต้องอย่างแน่นอนที่นี่
Samrat Khan

12

**

ใช้ "ผู้แต่งลบผู้จำหน่าย / แพ็คเกจ"

** นี่คือตัวอย่าง: ติดตั้ง / เพิ่ม Pakage

composer require firebear/importexportfree

Uninsall / Remove

composer remove firebear/importexportfree

Finaly หลังจากลบ:

php -f bin/magento setup:upgrade

php bin/magento setup:static-content:deploy f

php bin/magento indexer:reindex 

php -f bin/magento cache:clean

9

ในการลบแพ็คเกจโดยใช้คำสั่งผู้แต่ง

composer remove <package>

ในการติดตั้งแพ็คเกจโดยใช้คำสั่งผู้แต่ง

composer require <package>

เพื่อติดตั้งแพ็กเกจทั้งหมดที่กล่าวถึงใน composer.json

composer install

เพื่ออัพเดทแพ็คเกจ

composer update

ฉันใช้สิ่งเหล่านี้สำหรับโครงการ Laravel


9

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

composer remove <package_name>
composer update

8

ในกรณีที่คำตอบที่ได้รับยังคงไม่ช่วยคุณให้ลองทำดังนี้

  • ลบบรรทัดในตนเองrequireจากcomposer.json

  • วิ่ง composer update


3

เรามาพร้อมทางออกที่ยอดเยี่ยม วิธีการแก้ปัญหานี้จะทำจริงใน Laravel 6 หากคุณต้องการลบแพคเกจใด ๆ จากโครงการ Laravel ของคุณคุณสามารถลบแพคเกจได้อย่างง่ายดายโดยทำตามขั้นตอนด้านล่าง:

ขั้นตอนที่ 1:คุณต้องทราบชื่อแพ็คเกจที่คุณต้องการลบ หากคุณไม่ทราบชื่อแพคเกจที่สมบูรณ์คุณสามารถเปิดโฟลเดอร์โครงการและไปที่composer.jsonไฟล์และตรวจสอบชื่อต้องใช้อาเรย์

"require": {
        "php": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.2",
        "laravel/passport": "^8.3",
        "laravel/tinker": "^2.0"
    },

สมมติว่าที่นี่ฉันจะลบแพคเกจ "fideloper / proxy"

ขั้นตอนที่ 2 : พร้อมรับคำสั่งเปิดกับไดเรกทอรีโฟลเดอร์รากโครงการของคุณ ขั้นตอนที่ 3:ก่อนอื่นล้างแคชทั้งหมดโดยทำตามคำสั่ง เรียกใช้คำสั่งทีละรายการป้อนคำอธิบายรูปภาพที่นี่

php artisan cache:clear  
php artisan config:clear 

ขั้นตอนที่ 4:ตอนนี้เขียนคำสั่งต่อไปนี้เพื่อลบแพคเกจ ที่นี่คุณต้องเปลี่ยนชื่อแพ็คเกจแทนแพ็คเกจตัวอย่างของฉัน

composer remove fideloper/proxy

ตอนนี้รอสักครู่แพคเกจของคุณจะถูกลบ


2
หรือcomposer remove laravel/telescope --devถ้าเป็นแพ็คเกจ dev
vinsa

3

ลบแพ็คเกจด้วย

composer remove vendorname/packagename

คุณสามารถตรวจสอบการลบแพคเกจจาก composer.json - เอกสาร

หรือคุณสามารถลบชื่อแพ็คเกจออกจากcomposer.jsonไฟล์และเรียกใช้composer updateจากในไดเรกทอรีโครงการของคุณ ฉันหวังว่ามันจะช่วย

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