ライブラリを強制的に再インストールするようにするにはどうすればよいですか?


95

私はZF2スケルトンアプリを使用していますが、外部ライブラリがgitにコミットされるのを防ぐ.gitignoreがあります。デバッグ中は、ライブラリのソースのあちこちにあるものを変更して、どのように機能するかを学びます。これらがバージョン管理されている場合、元の状態に戻すのは非常に簡単です。

Composerに特定のフレームワークを再インストールして、新しい未変更のコピーを再度取得できるようにするにはどうすればよいですか?

PS:.gitignoreファイルは、理由があるため、削除しないことをお勧めします。サードパーティのライブラリがアプリのリポジトリにアクセスするのを防ぎます。自動展開中にいつでもインストールできます。


2
1つのオプションは、composer.lockを削除してからcomposer installを実行することです
vascowhite 2013年

回答:


48

--prefer-sourcecomposer のフラグを使用して、VCS情報(使用可能な場合)で外部パッケージをチェックアウトできます。単に元の状態に戻すことができます。また、composer updateコマンドを発行すると、composerはローカルで行った変更を検出し、それらを破棄するかどうかを尋ねます。

.gitignoreファイルはルートプロジェクト(ZF2スケルトン)に関連しており、ベンダーのディレクトリ(サードパーティのライブラリがある場所)が自分のVCSにコミットするのを防ぎます。ignoreファイルは、ベンダーのgitリポジトリとは無関係です。


7
最初は-prefer-sourceの提案は機能しませんでした。意図したとおりに機能させるにはすべてのライブラリを削除して再インストールする必要があることに気づきcomposer status -v、変更に関する情報を提供しました。
ジュリアン

162

ベンダーフォルダーをクリアするだけです

rm -rf vendor/*

@Loenix、ロックを解除してください。
ハーフストップ2018年

7
ローカルキャッシュが破損しているケースがあったので、ベンダーディレクトリを削除した後でも、壊れた依存関係を再インストールし続けました。composer clearcacheそのような場合には良い追加です。
okdewit 2018

3
これは、OPがパッケージを1つだけ再インストールする必要があるときに、composerがすべてのパッケージを再インストールする必要があることを考えると、非常に根本的なアプローチのようです。composer require vendor/packageOPが望むことを、より短い時間で実行します。多くの人がこの回答に賛成票を投じたことに私は少し驚いています。
frederickjh

composer clearcacheが機能しない場合は、/ home / [username] /。cacheディレクトリを削除できます。強制的に再ダウンロードします。packagist.composer.orgに加えてプライベートコンポーザーpackagistを使用し、誰かが新しいタグを追加せずに変更を行う場合に役立ちます。
Neil Davis、

2
Composerは必ずしもベンダーディレクトリにインストールするだけではないため、強引なアプローチとしても、すべての状況で機能するわけではありません。
ウンドリアン

34

vendor/ディレクトリ内のすべてのパッケージを削除したくなかったので、次のようにしました。

  1. rm -rf vendor/package-i-messed-up
  2. composer install 再び

4
または「composer require vendor / package-i-
mesed

1
それが機能しないcomposer clearcache場合は、何らかの理由でキャッシュが破損した場合に備えて、最初に実行することができます。
Sean the Bean

26

私がしたこと:

  1. その特定のライブラリのフォルダを削除しました
  2. composer update --prefer-source vendor/library-name

git repoとともにライブラリを再度フェッチします


それが機能しないcomposer clearcache場合は、何らかの理由でキャッシュが破損した場合に備えて、最初に実行することができます。
Sean the Bean


3

ユーザー@aaracrrが別の回答のコメントで指摘したように、おそらく最良の回答は、同じバージョンの制約を持つパッケージを再要求することです。

すなわち。

composer require vendor/package

またはバージョン制約を指定する

composer require vendor/package:^1.0.0

1

何らかの理由で、再インストールを強制する明白で最も簡単な方法を提案した人はいませんでした。

> composer remove vendor-name/package-name && composer vendor-name/package-name

私にとって魅力のように働いて、ありがとう:)
Gucu112
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.