Comment supprimer un package de Laravel à l'aide de composer?

402

Quelle est la bonne façon de supprimer un package de Laravel 4? Depuis longtemps, j'ai essayé:

  1. Supprimer la déclaration de composer.json(dans la section "exiger")
  2. Supprimer tous les alias de classe de app.php
  3. Supprimez toutes les références au package de mon code :-)
  4. Courir composer update
  5. Courir composer dump-autoload

Ca ne fonctionne pas! Suis-je en train de manquer quelque chose?

Certains packages publient leur configuration via "artisan config: publish ...". Existe-t-il un moyen de les "dépublier"?

igaster
la source

Réponses:

598

L'exécution de la commande suivante supprimera le package du fournisseur (ou partout où vous installez les packages), composer.json et composer.lock. Modifiez le fournisseur / package de manière appropriée.

composer remove vendor/package

De toute évidence, vous devrez supprimer les références à ce package dans votre application.

J'utilise actuellement la version suivante de Composer:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29
steadweb
la source
13
Et puis exécutez composer updatepour supprimer le dossier fournisseur / package du fournisseur
Zeshan
11
La mise à jour de @ZeshanKhattak composer mettra à jour toutes les dépendances. Cela laisse le projet dans un état instable. N'utilisez pas la mise à jour du compositeur sauf si vous souhaitez mettre à jour les dépendances
zarax
11
composer remove packagename, Il met à jour la suppression du package de composer.json et supprime le dossier de package du fournisseur ... laravel - 5.4.24, composer - 1.4.2.
Il semble que Composer installe automatiquement les packages manquants après l'exécution composer remove <package>. Quoi qu'il en soit pour éviter cela? Utilisation de la version 1.7.2.
Olle Härstedt
il doit être: composer remove package_name à la place: composer remove vendor / package il n'y a pas besoin de vendeur car laravel vérifie automatiquement dans le répertoire des fournisseurs les packages.
prashant
171

Je l'ai fait fonctionner ... Les étapes pour supprimer un paquet de Laravel sont:

  1. Supprimer la déclaration de composer.json (dans la section "require")
  2. Supprimez le fournisseur de services de "app / config / app.php" (référence dans le tableau "providers")
  3. Supprimez tous les alias de classe de "app / config / app.php"
  4. Supprimez toutes les références au package de votre code :-)
  5. Exécutez "Composer Update Vendor / Package-Name". Cela supprimera le dossier du package du dossier "vendeur" et reconstruira la carte de chargement automatique du composeur.
  6. Supprimez manuellement les fichiers publiés (lire le commentaire de zwacky)

Il supprimera le dossier du package du dossier "Vendor"

igaster
la source
2
bien que la publication des actifs / configurations ne soit pas vraiment une chose automatisée. je supprime généralement manuellement les dossiers du fournisseur / package dans config / ou public /.
zwacky
7
maintenant laravel devrait proposer quelque chose comme "remove package <package-name>" pour le rendre plus facile.
Chandan Gupta
19
Un problème avec cette solution est qu'elle mettra à jour tous les autres packages, ce qui n'est peut-être pas ce que vous voulez.
tremby
3
(1) et (5) peuvent être remplacés par la course composer remove vendor/package, je pense.
JCarlosR
Merci, ces instructions ont été utiles pour supprimer le package de thème Igaster / laravel qui ne fonctionne pas
Jjsg08
59

Exécution de la commande suivante

composer remove Vendor/Package Name

C'est tout. Pas besoin de mise à jour du compositeur. Le nom du fournisseur / package est simplement le répertoire tel qu'installé auparavant

Riaj Ferdous
la source
1
Je l'ai fait et il dit que ce n'est plus nécessaire dans composer.json, donc 'ignorer'
Sweet Chilly Philly
1
composer remove <packageName>Je pense que celui-ci est parfait pour supprimer tous les paquets. Oubliez Vendor:) Par exemple,composer remove laravel/tinker
Shamsul Huda
43

Normalement composer removeutilisé comme ça suffit:

$ composer remove vendor/package

mais si le package composer est supprimé et que le cache de configuration n'est pas nettoyé, vous ne pouvez pas le nettoyer, lorsque vous essayez comme ça

php artisan config:clear

vous pouvez obtenir une erreur In ProviderRepository.php line 208:

Classe «Laracasts \ Flash \ FlashServiceProvider» introuvable

c'est une impasse, sauf si vous allez supprimer des fichiers

$rm bootstrap/cache/config.php

Et c'est Laravel 5.6 dont je parle, pas une sorte de truc très vieux.

Cela se produit généralement lors d'un déploiement automatisé, lorsque vous copiez des fichiers d'une nouvelle version au-dessus de l'ancien cache. Même si vous avez vidé le cache avant la copie. Vous vous retrouvez avec un ancien cache et un nouveau composer.json.

Yevgeniy Afanasyev
la source
2
Je pense que c'est corrigé dans 5.7
Yevgeniy Afanasyev
1
Avec 5.6, mon bootstrap / cache était vide. J'ai oublié que j'avais changé le chemin du cache (config / cache.php)! La suppression des fichiers dans le nouveau dossier de cache a résolu le problème!
Aine
2
@YevgeniyAfanasyev Ce n'est pas corrigé Même en 5.7
Shreyansh Panchal
2
J'ai presque passé 3 heures à tirer mes cheveux dessus. Je pensais que ça config:clearréglerait ça.
Shreyansh Panchal
34

vous pouvez supprimer n'importe quel package en tapant simplement la commande follwing dans le terminal, et supprimer simplement les fournisseurs et alias que vous avez fournis au moment de l'installation du package, le cas échéant, et mettre à jour le compositeur,

composer remove vendor/your_package_name
composer update
Shahrukh Anwar
la source
1
Parfois, pour mettre à jour les nouvelles dépendances, vous devez mettre à jour le compositeur. Je pense qu'il n'y a aucun mal à gérer cela.
Shahrukh Anwar
18

Vous pouvez utiliser l'une des deux méthodes ci-dessous:

  1. Exécution de la commande ci-dessous (moyen le plus recommandé de supprimer votre package sans mettre à jour vos autres packages)

    $ composer remove vendor/package

  2. Allez dans votre fichier composer.json puis exécutez la commande comme ci-dessous, cela supprimera votre package (mais il mettra également à jour vos autres packages)

    $ composer update

Prashant Barve
la source
17

Avant de supprimer un package de la déclaration composer.json, veuillez supprimer le cache

php artisan cache:clear  
php artisan config:clear 

Si vous oubliez de supprimer le cache et que vous obtenez une erreur de classe non trouvée, veuillez réinstaller le package et vider le cache et supprimer à nouveau.

Rayees Pk
la source
16

Manière la plus simple et la plus simple

Syntaxe:

composer remove <package>

Exemple:

composer remove laravel/tinker
gecko
la source
15

Si vous obtenez toujours l'erreur après avoir effectué toutes les étapes ci-dessus, accédez à vos projets, bootstrap->cache->config.phpsupprimez manuellement les entrées de fournisseur et d'alias du tableau mis en cache.

Ramjith Ap
la source
Cela m'a aidé.
Peter Griffin
1
Certains fournisseurs de packages ne remplissent pas toutes les conditions requises pour créer un package. Pour cette raison, ces fournisseurs composer remove vendor/packagen'ont pas pu supprimer correctement les entrées de cache. Donc, @Ramjith Ap est absolument correct ici.
Samrat Khan
12

**

utilisez "composer remove vendor / package"

** Ceci est un exemple: installer / ajouter Pakage

composer require firebear/importexportfree

Désinstaller / Supprimer

composer remove firebear/importexportfree

Enfin après avoir retiré:

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
la source
9

Pour supprimer un package à l'aide de la commande composer

composer remove <package>

Pour installer un package à l'aide de la commande composer

composer require <package>

Pour installer tous les packages mentionnés dans composer.json

composer install

Pour mettre à jour des packages

composer update

Je les ai utilisés pour le projet Laravel

Kiran Reddy
la source
9

Vous pouvez supprimer n'importe quel package en tapant la commande suivante dans le terminal, et supprimez simplement les fournisseurs et l'alias que vous avez fournis au moment de l'installation du package et mettez à jour le compositeur

composer remove <package_name>
composer update
Maneesha
la source
8

Si les réponses données ne vous aident toujours pas à supprimer cela, essayez ceci:

  • Supprimez manuellement la ligne requiredecomposer.json

  • Courir composer update

DonJoe
la source
3

Nous sommes venus avec une excellente solution. Cette solution est pratiquement effectuée dans Laravel 6. Si vous souhaitez supprimer un package de votre projet Laravel, vous pouvez facilement supprimer le package en suivant les étapes ci-dessous:

Étape 1: Vous devez connaître le nom du package que vous souhaitez supprimer. Si vous ne connaissez pas le nom complet du package, vous pouvez ouvrir votre dossier de projet et aller dans le composer.jsonfichier et archiver le nom en exigeant un tableau

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

Supposons, ici, je vais supprimer le package "fideloper / proxy".

Étape 2 : Ouvrez l'invite de commande avec le répertoire du dossier racine de votre projet Étape 3: Tout d'abord, videz tout le cache en suivant les commandes. Exécutez les commandes une par une.entrez la description de l'image ici

php artisan cache:clear  
php artisan config:clear 

Étape 4: Maintenant, écrivez la commande suivante pour supprimer le package. Ici, vous devez modifier le nom de votre package au lieu de mon exemple de package.

composer remove fideloper/proxy

Maintenant, attendez quelques secondes que votre paquet supprime.

Sumit Kumar Gupta
la source
2
ou composer remove laravel/telescope --devsi c'est un package dev
vinsa
3

Retirez le paquet avec

composer remove vendorname/packagename

vous pouvez vérifier supprimer le package de composer.json - docs

Ou vous pouvez supprimer le nom du package du composer.jsonfichier et l'exécuter à composer updatepartir de votre répertoire de projet. J'espère que ça aide.

Abdellah Ramadan
la source