Bagaimana cara menghapus paket dari Laravel menggunakan komposer?

402

Apa cara yang tepat untuk menghapus paket dari Laravel 4? Sudah lama saya mencoba:

  1. Hapus deklarasi dari composer.json(di bagian "wajib")
  2. Hapus Kelas Alias ​​dari app.php
  3. Hapus referensi untuk paket dari kode saya :-)
  4. Lari composer update
  5. Lari composer dump-autoload

Tidak bekerja! Apakah saya melewatkan sesuatu?

Beberapa paket mempublikasikan konfigurasinya melalui "artisan config: publish ...". Apakah ada cara untuk "membatalkan publikasi" mereka?

igaster
sumber

Jawaban:

598

Menjalankan perintah berikut ini akan menghapus paket dari vendor (atau di mana pun Anda menginstal paket), composer.json dan composer.lock. Ubah vendor / paket dengan tepat.

composer remove vendor/package

Tentunya Anda harus menghapus referensi untuk paket itu di dalam aplikasi Anda.

Saat ini saya sedang menjalankan versi komposer berikut:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29
mantap
sumber
13
Dan kemudian jalankan composer updateuntuk menghapus folder vendor / paket dari vendor
Zeshan
11
Pembaruan komposer @ZeshanKhattak akan memperbarui semua dependensi. Itu cara meninggalkan proyek dalam keadaan tidak stabil. Jangan gunakan pembaruan komposer kecuali jika Anda ingin memperbarui dependensi
zarax
11
composer remove packagename, Ini memperbarui menghapus paket dari composer.json dan menghapus folder paket dari vendor ... laravel - 5.4.24, composer - 1.4.2.
Sepertinya komposer secara otomatis menginstal paket yang hilang setelah berjalan composer remove <package>. Pokoknya untuk menghindarinya? Menggunakan versi 1.7.2.
Olle Härstedt
seharusnya: komposer menghapus package_name sebagai gantinya: komposer menghapus vendor / paket tidak perlu vendor karena laravel secara otomatis memeriksa direktori vendor untuk paket.
prashant
171

Berhasil ... Langkah-langkah untuk menghapus paket dari Laravel adalah:

  1. Hapus deklarasi dari composer.json (di bagian "wajib")
  2. Hapus Penyedia Layanan dari "app / config / app.php" (referensi dalam larik "penyedia")
  3. Hapus semua alias Kelas dari "app / config / app.php"
  4. Hapus referensi ke paket dari kode Anda :-)
  5. Jalankan "vendor pembaruan komposer / nama-paket". Ini akan menghapus folder paket dari folder "vendor" dan akan membangun kembali peta autoloading komposer.
  6. Hapus file yang dipublikasikan secara manual (baca komentar oleh zwacky)

Ini akan menghapus folder paket dari folder "Vendor"

igaster
sumber
2
walaupun tidak menerbitkan aset / konfigurasi sebenarnya bukanlah hal yang otomatis. saya biasanya menghapus secara manual folder vendor / paket di config / atau publik /.
zwacky
7
sekarang laravel akan muncul dengan sesuatu seperti "hapus paket <paket-nama>" untuk membuatnya lebih mudah.
Chandan Gupta
19
Masalah dengan solusi ini adalah ia akan memperbarui semua paket lain, yang mungkin bukan yang Anda inginkan.
gemetar
3
(1) dan (5) dapat diganti dengan menjalankan composer remove vendor/package, saya pikir.
JCarlosR
Terima kasih, petunjuk ini bermanfaat untuk menghapus paket Igaster / laravel-theme yang tidak berfungsi
Jjsg08
59

Jalankan perintah berikut

composer remove Vendor/Package Name

Itu saja. Tidak perlu pembaruan komposer. Vendor / Nama Paket hanya direktori seperti yang diinstal sebelumnya

Riaj Ferdous
sumber
1
Saya melakukan ini dan mengatakan bahwa itu tidak lagi diperlukan dalam composer.json jadi 'mengabaikan'
Sweet Chilly Philly
1
composer remove <packageName>Saya pikir ini sangat cocok untuk menghapus paket apa pun. Lupakan Vendor:) Misalnya,composer remove laravel/tinker
Shamsul Huda
43

Biasanya composer removedigunakan seperti ini sudah cukup:

$ composer remove vendor/package

tetapi jika paket komposer dihapus dan cache config tidak dibersihkan Anda tidak dapat membersihkannya, ketika Anda mencoba seperti itu

php artisan config:clear

Anda bisa mendapatkan kesalahan In ProviderRepository.php line 208:

Kelas 'Laracasts \ Flash \ FlashServiceProvider' tidak ditemukan

ini jalan buntu, kecuali Anda menghapus file

$rm bootstrap/cache/config.php

Dan ini Laravel 5.6 yang saya bicarakan, bukan sesuatu yang sangat tua.

Ini terjadi biasanya pada penyebaran otomatis, ketika Anda menyalin file rilis baru di atas cache lama. Bahkan jika Anda membersihkan cache sebelum menyalin. Anda berakhir dengan cache lama dan composer.json baru.

Yevgeniy Afanasyev
sumber
2
Saya pikir itu diperbaiki dalam 5,7
Yevgeniy Afanasyev
1
Dengan 5.6, bootstrap / cache saya kosong. Saya lupa bahwa saya telah mengubah jalur cache (config / cache.php)! Menghapus file di folder cache baru memperbaiki masalahnya!
Aine
2
@YevgeniyAfanasyev Ini tidak diperbaiki Bahkan dalam 5.7
Shreyansh Panchal
2
Saya hampir menghabiskan 3 jam mencabut rambut saya karena ini. Saya pikir config:clearakan memperbaikinya.
Shreyansh Panchal
34

Anda dapat menghapus paket apa pun hanya dengan mengetik perintah follwing di terminal, dan cukup menghapus penyedia dan alias yang Anda berikan pada saat menginstal paket, jika ada dan memperbarui komposer,

composer remove vendor/your_package_name
composer update
Shahrukh Anwar
sumber
1
Terkadang untuk memperbarui dependancies baru, Anda harus memperbarui komposer. Saya pikir tidak ada salahnya menjalankan itu.
Shahrukh Anwar
18

Anda dapat melakukan salah satu dari dua metode di bawah ini:

  1. Menjalankan perintah di bawah ini (cara yang paling direkomendasikan untuk menghapus paket Anda tanpa memperbarui paket Anda yang lain)

    $ composer remove vendor/package

  2. Pergi ke file composer.json Anda dan kemudian jalankan perintah seperti di bawah ini akan menghapus paket Anda (tetapi juga akan memperbarui paket Anda yang lain)

    $ composer update

Prashant Barve
sumber
17

Sebelum menghapus paket dari deklarasi composer.json, harap hapus cache

php artisan cache:clear  
php artisan config:clear 

Jika Anda lupa untuk menghapus cache dan Anda mendapatkan kesalahan kelas tidak ditemukan maka silakan instal ulang paket dan hapus cache dan hapus lagi.

Rayees Pk
sumber
16

Cara paling sederhana dan termudah

Sintaksis:

composer remove <package>

Contoh:

composer remove laravel/tinker
tokek
sumber
15

Jika Anda masih mendapatkan kesalahan setelah Anda selesai dengan semua langkah di atas, buka proyek Anda bootstrap->cache->config.phpmenghapus entri penyedia & alias dari array yang di-cache secara manual.

Ramjith Ap
sumber
Ini membantu saya.
Peter Griffin
1
Beberapa vendor paket tidak memenuhi semua persyaratan untuk membuat paket. Karena alasan itu, vendor ini composer remove vendor/packagetidak dapat menghapus entri cache dengan benar. Jadi, @Ramjith Ap benar-benar benar di sini.
Samrat Khan
12

**

gunakan "komposer hapus vendor / paket"

** Ini Contoh: Instal / Tambah Pakage

composer require firebear/importexportfree

Batalkan pemasangan / Hapus

composer remove firebear/importexportfree

Akhirnya setelah menghapus:

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
SUNNETmedia
sumber
9

Untuk menghapus paket menggunakan perintah komposer

composer remove <package>

Untuk menginstal paket menggunakan perintah komposer

composer require <package>

Untuk menginstal semua paket yang disebutkan dalam composer.json

composer install

Untuk memperbarui paket

composer update

Saya menggunakan ini untuk proyek Laravel

Kiran Reddy
sumber
9

Anda dapat menghapus paket apa pun dengan mengetik perintah berikut di terminal, dan hapus saja penyedia dan alias yang Anda berikan pada saat menginstal paket dan memperbarui komposer

composer remove <package_name>
composer update
Maneesha
sumber
8

Jika jawaban yang diberikan masih tidak membantu Anda menghapusnya, coba ini:

  • Hapus garis masuk secara manual requiredaricomposer.json

  • Lari composer update

DonJoe
sumber
3

Kami datang dengan solusi hebat. Solusi ini praktis dilakukan di Laravel 6. Jika Anda ingin menghapus paket apa pun dari Proyek Laravel Anda, maka Anda dapat dengan mudah menghapus paket dengan mengikuti langkah-langkah di bawah ini:

Langkah 1: Anda harus tahu nama paket yang ingin Anda hapus. Jika Anda tidak tahu nama paket lengkap maka Anda dapat membuka folder proyek Anda dan pergi ke composer.jsonfile dan periksa nama membutuhkan array

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

Misalkan, di sini saya akan menghapus paket "fideloper / proxy".

Langkah 2 : Buka command prompt dengan direktori folder root proyek Anda. Langkah 3: Pertama-tama hapus semua cache dengan mengikuti perintah. Jalankan perintah satu per satu.masukkan deskripsi gambar di sini

php artisan cache:clear  
php artisan config:clear 

Langkah 4: Sekarang tulis perintah berikut untuk menghapus paket. Di sini Anda perlu mengubah nama paket Anda, bukan paket contoh saya.

composer remove fideloper/proxy

Sekarang, tunggu beberapa detik paket Anda dihapus.

Sumit Kumar Gupta
sumber
2
atau composer remove laravel/telescope --devjika paket dev
vinsa
3

Hapus paket dengan

composer remove vendorname/packagename

Anda dapat memeriksa hapus paket dari composer.json - docs

Atau Anda dapat menghapus nama paket dari composer.jsonfile dan menjalankan composer updatedari dalam direktori proyek Anda. Saya harap ini membantu.

Abdellah Ramadan
sumber