web-dev-qa-db-fra.com

Comment forcer composer à réinstaller une bibliothèque?

J'utilise l'application squelette ZF2 et elle dispose d'un fichier .gitignore qui empêche les bibliothèques externes d'être validées par git. Pendant le débogage, j'aime bien changer des choses ici et là dans le code source des bibliothèques pour apprendre comment les choses fonctionnent. Si ceux-ci étaient contrôlés par la version, il serait très facile de revenir à leur état d'origine.

Comment puis-je forcer Composer à réinstaller un framework particulier afin que je puisse à nouveau obtenir une nouvelle copie non modifiée?

PS: Ne suggérez pas de supprimer le fichier .gitignore, car il existe pour une raison quelconque. cela empêche mes bibliothèques tierces d'entrer dans le référentiel de mon application. Je peux toujours les installer lors d'un déploiement automatisé.

77
Julian

Vous pouvez utiliser l'indicateur --prefer-source pour composer afin de récupérer les packages externes contenant les informations VCS (le cas échéant). Vous pouvez simplement revenir à l'état d'origine. De même, si vous exécutez la commande composer update, composer, _ détectera toutes les modifications apportées localement et vous demandera si vous souhaitez les ignorer.

Votre fichier .gitignore est lié à votre projet racine (squelette ZF2) et empêche le répertoire du fournisseur (où se trouvent vos bibliothèques tierces) de s’engager sur votre propre VCS. Le fichier ignore est sans rapport avec les dépôts git de vos fournisseurs.

45
Bram Gerritsen

Vient de vider votre dossier de fournisseurs

rm -rf vendor/*
140
Zoran

Ce que j'ai fait:

  1. Supprimé le dossier de cette bibliothèque particulière
  2. composer update --prefer-source vendor/library-name

Il récupère à nouveau la bibliothèque avec son dépôt git

20
Attila Fulop

Je ne voulais pas supprimer tous les paquets du répertoire vendor/, alors voici comment je l'ai fait:

  1. rm -rf vendor/package-i-messed-up
  2. composer install encore
17
Yerke

Réinstallez les dépendances. Supprimez le dossier du fournisseur (manuellement) ou via la commande rm (si vous êtes dans le dossier du projet, bien sûr) sous Linux avant:

rm -rf vendor/

composer update -v

https://www.dev-metal.com/composer-problems-try-full-reset/

1

Comme l'utilisateur @aaracrr l'a souligné dans un commentaire sur une autre réponse, la meilleure solution consiste probablement à requérir le package avec la même contrainte de version.

c'est à dire.

composer require vendor/package

ou en spécifiant une contrainte de version

composer require vendor/package:^1.0.0
1
frederickjh