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?

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

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"


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


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.


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

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


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.


16

Cara paling sederhana dan termudah

Sintaksis:

composer remove <package>

Contoh:

composer remove laravel/tinker

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.


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

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


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

8

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

  • Hapus garis masuk secara manual requiredaricomposer.json

  • Lari composer update


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.


2
atau composer remove laravel/telescope --devjika paket dev
vinsa

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.