Besteci kullanarak Laravel'den bir paket nasıl kaldırılır?


402

Laravel 4'ten bir paketi kaldırmanın doğru yolu nedir? Uzun zamandır denedim:

  1. Bildirimi kaldır composer.json("zorunlu" bölümünde)
  2. Sınıf Takma Adlarını app.php
  3. Pakete tüm referansları kodumdan kaldır :-)
  4. Çalıştırmak composer update
  5. Çalıştırmak composer dump-autoload

Çalışmıyor! Bir şey mi kaçırıyorum?

Bazı paketler yapılandırmalarını "artisan config: publish ..." aracılığıyla yayınlar. Onları "yayından kaldırmanın" bir yolu var mı?

Yanıtlar:


595

Aşağıdaki komutu çalıştırmak paketi satıcıdan (veya paketleri nereye yüklerseniz yükleyin), composer.json ve composer.lock öğelerinden kaldırır. Satıcıyı / paketi uygun şekilde değiştirin.

composer remove vendor/package

Açıkçası, uygulamanızdaki bu pakete referansları kaldırmanız gerekir.

Şu anda bestecinin şu sürümünü kullanıyorum:

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

13
Ve sonra composer updatesatıcıdan / paket klasörünü satıcıdan kaldırmak için çalıştırın
Zeshan

11
@ZeshanKhattak besteci güncellemesi tüm bağımlılıkları güncelleyecektir. Bu şekilde projeyi dengesiz durumda bırakır. Bağımlılıkları güncellemek istemiyorsanız besteci güncellemesini kullanmayın
zarax

11
composer remove packagename, Composer.json paket kaldırmayı günceller ve paket klasörü satıcıdan kaldırır ... laravel - 5.4.24, besteci - 1.4.2.

Besteci çalıştırdıktan sonra eksik paketleri otomatik olarak yüklüyor gibi görünüyor composer remove <package>. Yine de bundan kaçınmak için? 1.7.2 sürümünü kullanma.
Olle Härstedt

şöyle olmalıdır: composer bunun yerine package_name öğesini kaldır: composer satıcıyı / paketi kaldır laravel otomatik olarak satıcı dizinini paketler için kontrol ederken satıcıya gerek yoktur.
prashant

171

İşe yaradı ... Laravel'den bir paketi kaldırma adımları:

  1. Composer.json sitesinden bildirimi kaldırın ("gerektirir" bölümünde)
  2. Servis Sağlayıcı'yı "app / config / app.php" klasöründen kaldırın ("sağlayıcılar" dizisindeki referans)
  3. Sınıf Takma Adlarını "app / config / app.php" dosyasından kaldırın
  4. Pakete ilişkin referansları kodunuzdan kaldırın :-)
  5. "Besteci güncelleme satıcısı / paket adı" nı çalıştırın. Bu, paket klasörünü "vendor" klasöründen kaldıracak ve besteci otomatik yükleme haritasını yeniden oluşturacaktır.
  6. Yayınlanan dosyaları el ile silin (yorumu zwacky tarafından okuyun)

Paket klasörünü "Satıcı" klasöründen kaldıracak


2
varlıkların / yapılandırmaların yayından kaldırılması gerçekten otomatik bir şey değildir. i genellikle config / veya public / dizinindeki satıcı / paket klasörlerini el ile silerim.
07:28

7
şimdi laravel daha kolay hale getirmek için "<package-name> paketini kaldır" gibi bir şey bulmalıdır.
Chandan Gupta

19
Bu çözümle ilgili bir sorun, diğer tüm paketleri güncellemesidir, bu da istediğiniz şey olmayabilir.
tremby

3
(1) ve (5) koşu ile değiştirilebilir composer remove vendor/packagediye düşünüyorum.
JCarlosR

Teşekkür ederim, bu talimatlar çalışmayan Igaster / laravel-theme paketini kaldırmak için yararlı oldu
Jjsg08

59

Aşağıdaki komutu çalıştırma

composer remove Vendor/Package Name

Bu kadar. Besteci güncellemesine gerek yok. Tedarikçi / Paket Adı, daha önce yüklendiği gibi bir dizindir


1
Bunu yaptım ve artık composer.json'da bu yüzden 'görmezden gelmek' gerekmediğini söylüyor
Sweet Chilly Philly

1
composer remove <packageName>Bunun herhangi bir paketi kaldırmak için mükemmel olduğunu düşünüyorum. Unutmayın Vendor:) Örneğin,composer remove laravel/tinker
Shamsul Huda

43

Normalde composer removebu şekilde kullanılır:

$ composer remove vendor/package

ancak besteci paketi kaldırılırsa ve yapılandırma önbelleği temizlenmezse, bunu denediğinizde temizleyemezsiniz.

php artisan config:clear

bir hata alabilirsin In ProviderRepository.php line 208:

'Laracasts \ Flash \ FlashServiceProvider' sınıfı bulunamadı

dosyaları silmediğiniz sürece bu bir çıkmaz yol

$rm bootstrap/cache/config.php

Ve bu Laravel 5.6, bahsettiğim gibi, çok eski şeyler değil.

Eski önbelleğin üstüne yeni bir sürümün dosyalarını kopyaladığınızda genellikle otomatik dağıtımda olur. Kopyalamadan önce önbelleği temizleseniz bile. Eski önbellek ve yeni bir composer.json ile sonuçlanırsınız.


2
Sanırım 5.7'de düzeltildi
Yevgeniy Afanasyev

1
5.6 ile önyükleme / önbellek boştu. Önbellek yolunu değiştirdiğimi unuttum (config / cache.php)! Yeni önbellek klasöründeki dosyaların silinmesi sorunu çözdü!
Aine

2
@YevgeniyAfanasyev Bu sabit değil 5.7'de bile
Shreyansh

2
Neredeyse 3 saatimi saçlarımı çekerek geçirdim. Bunu config:cleardüzelteceğini düşündüm .
Shreyansh Panchal

34

herhangi bir paketi yalnızca terminalde follwing komutunu yazarak kaldırabilir ve yalnızca paketi yüklerken sağladığınız sağlayıcıları ve takma adı kaldırabilir ve besteciyi güncelleyebilirsiniz,

composer remove vendor/your_package_name
composer update

1
Bazen yeni bağımlılıkları güncellemek için besteciyi güncellemeniz gerekir. Bence bunu çalıştırmanın hiçbir zararı yok.
Shahrukh Anwar

18

Aşağıdaki iki yöntemden herhangi birini yapabilirsiniz:

  1. Aşağıdaki komutu çalıştırmak (diğer paketlerinizi güncellemeden paketinizi kaldırmanın en çok tavsiye edilen yolu)

    $ composer remove vendor/package

  2. Composer.json dosyanıza gidin ve aşağıdaki gibi komutu çalıştırın, paketinizi kaldıracaktır (ancak diğer paketlerinizi de güncelleyecektir)

    $ composer update


17

Bir paketi composer.json bildiriminden kaldırmadan önce lütfen önbelleği kaldırın

php artisan cache:clear  
php artisan config:clear 

Önbelleği kaldırmayı unutursanız ve sınıf bulunamadı hatası alırsanız, lütfen paketi yeniden yükleyin ve önbelleği temizleyin ve tekrar kaldırın.


16

En basit ve en kolay yol

Sözdizimi:

composer remove <package>

Misal:

composer remove laravel/tinker

15

Yukarıdaki adımların tümünü tamamladıktan sonra hala hatayı alıyorsanız, projelerinize gidin bootstrap->cache->config.php, sağlayıcı ve takma ad girişlerini önbelleğe alınan diziden manuel olarak kaldırın.


Bu bana yardımcı oldu.
Peter Griffin

1
Bazı paket satıcıları, bir paket oluşturmak için tüm gereksinimleri karşılamaz. Bu nedenle, bu satıcılar composer remove vendor/packageönbellek girdilerini düzgün bir şekilde kaldıramaz. Yani, @Ramjith Ap burada kesinlikle doğrudur.
Samrat Khan

12

**

"besteci satıcıyı / paketi kaldır" seçeneğini kullanın

** Bu Örnek: Pakage Yükle / Ekle

composer require firebear/importexportfree

Uninsall / Kaldır

composer remove firebear/importexportfree

Çıkardıktan sonra son:

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 komutunu kullanarak bir paketi kaldırmak için

composer remove <package>

Composer komutunu kullanarak paket yüklemek için

composer require <package>

Composer.json içinde belirtilen tüm paketleri yüklemek için

composer install

Paketleri güncellemek için

composer update

Bunları Laravel projesi için kullandım


9

Terminalde aşağıdaki komutu yazarak herhangi bir paketi kaldırabilir ve paketi kurarken sağladığınız sağlayıcıları ve takma adı kaldırabilir ve besteciyi güncelleyebilirsiniz

composer remove <package_name>
composer update

8

Verilen cevapların hala bunu kaldırmanıza yardımcı olmaması durumunda, şunu deneyin:

  • El ile çizgiyi silmek requiredancomposer.json

  • Çalıştırmak composer update


3

Harika bir çözümle geldik. Bu çözüm pratik olarak Laravel 6'da yapılır. Laravel Projenizden herhangi bir paketi kaldırmak istiyorsanız, aşağıdaki adımları izleyerek paketi kolayca kaldırabilirsiniz:

Adım 1: Kaldırmak istediğiniz paket adını bilmelisiniz. Tam paket adını bilmiyorsanız, proje klasörünüzü açabilir ve composer.jsondosyaya gidip bir dizi gerektirdiğinde adı kontrol edebilirsiniz.

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

Diyelim ki burada "fideloper / proxy" paketini kaldıracağım.

Adım 2 : Proje kök klasör dizininizle komut istemini açın Adım 3: Her şeyden önce komutları izleyerek tüm önbelleği temizleyin. Komutları tek tek çalıştırın.resim açıklamasını buraya girin

php artisan cache:clear  
php artisan config:clear 

4. Adım: Şimdi paketi kaldırmak için aşağıdaki komutu yazın. Burada örnek paketim yerine paket adınızı değiştirmeniz gerekiyor.

composer remove fideloper/proxy

Şimdi, paketinizin kaldırılması için birkaç saniye bekleyin.


2
ya composer remove laravel/telescope --devda dev paketi ise
vinsa

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.