it-swarm.com.ru

Как заставить composer переустановить библиотеку?

Я использую скелетное приложение ZF2, и у него есть .gitignore, который предотвращает добавление внешних библиотек в git. Во время отладки я хотел бы пойти и изменить кое-что в источнике библиотек, чтобы узнать, как все это работает. Если бы они контролировались версией, было бы очень легко вернуть их обратно в исходное состояние.

Как я могу заставить Composer переустанавливать определенную платформу, чтобы я мог снова получить свежую -нодифицированную копию?

PS: Пожалуйста, не предлагайте удалять файл .gitignore, так как он есть по причине; это предотвращает проникновение сторонних библиотек в репозиторий моего приложения. Я всегда могу установить их во время автоматического развертывания.

73
Julian

Вы можете использовать флаг --prefer-source для composer, чтобы извлекать внешние пакеты с информацией о VCS (если есть). Вы можете просто вернуться в исходное состояние. Также, если вы введете команду composer update composer, она обнаружит любые изменения, сделанные вами локально, и спросит, хотите ли вы отменить их.

Ваш файл .gitignore связан с вашим корневым проектом (каркас ZF2), и он не позволяет директору вендора (где находятся ваши сторонние библиотеки) делать коммит в вашу собственную VCS. Файл игнорирования не связан с репозиторием Git ваших поставщиков.

42
Bram Gerritsen

Просто очистите папку ваших поставщиков

rm -rf vendor/*
138
Zoran

Что я сделал:

  1. Удалил папку этой конкретной библиотеки
  2. composer update --prefer-source vendor/library-name

Он снова получает библиотеку вместе с git-репо

19
Attila Fulop

Я не хотел удалять все пакеты в каталоге vendor/, поэтому вот как я это сделал:

  1. rm -rf vendor/package-i-messed-up
  2. composer install снова
15
Yerke

Переустановите зависимости. Удалите папку vendor (вручную) или с помощью команды rm (если вы находитесь в папке проекта, обязательно) в Linux до:

rm -rf vendor/

composer update -v

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

1
Abdalhady Alsayad

Как указал пользователь @aaracrr в комментарии к другому ответу, вероятно, лучший ответ - повторно запросить пакет с тем же ограничением версии.

то есть.

composer require vendor/package

или указание ограничения версии

composer require vendor/package:^1.0.0
1
frederickjh