composerから未使用の依存関係を削除する方法は?


209

composerでパッケージをインストールしましたが、依存関係として他の多くのパッケージがインストールされました。

今度はメインパッケージをでアンインストールしましたcomposer remove packageauthor/packagenameが、古い依存関係はすべて削除されませんでした。composerがクリーンアップしcomposer.jsonて、依存関係に従って必要なパッケージのみを保持することを期待していました。

未使用のすべてのパッケージをcomposerで強制的にクリーンアップおよび削除するにはどうすればよいですか?

回答:


375

これを行う正しい方法は次のとおりです。

composer remove jenssegers/mongodb --update-with-dependencies

ここでのフラグは、それが何をするのかについては明らかではありません。

更新

composer remove jenssegers/mongodb

以下のようv1.0.0デベロッパー-β2 --update-with-dependenciesデフォルトで、もはや必要とされません。


解決策が提供されたgithubで問題を開始してくれた@Yehosefに感謝しますが、彼が答えを更新しなかったので、みんなの便宜のために自分で書くことにしました
Denis Pshenov

おかげで、私は彼らの議論を終えることができませんでした。
Lorenz Meyer

3
注意すべきことの1つは、すでに質問したが、この質問に出くわすまでをcomposer remove …忘れてしまった--update-with-dependencies場合-以降の呼び出しでcomposer removeすべての依存関係が削除されるわけではありません。元に戻す必要があります。作曲家install、その後composer remove --update-with-dependencies
Mike G

これで、次のメッセージが表示されますYou are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies
。– Pathros

4
パッケージの削除後のクリーンアップはどうですか?-これが@LorenzMeyerの回答の出番です。@ LorenzMeyer composer updateへのこの回答への賛成
Allen Linatoc

29

実際、それはとても簡単です。

composer update

これらはすべて自動的に行われますが、他のパッケージも更新されます。

他のパッケージを更新せずにパッケージを削除するには、コマンドでそのパッケージを指定します。例:

composer update monolog/monolog

monolog/monologパッケージを削除します。

それでも、自動的に削除できず、手動で削除する必要があるいくつかの空のフォルダーまたはファイルが残っている場合があります。


8
これに関する不幸な点は、古いバージョンを削除するのではなく、パッケージを更新する必要があることです。たとえば、AAA / aaa〜1とバージョンBBB / bbb〜2の2つのパッケージがあり、現在AAA / aaaのバージョン1.0で1.1をリリースしている場合、BBB / bbbを削除すると自動的に更新されます(私がやろうとしていたことを..)
Yehosef

あなたが正しいです。より良い解決策がある場合は、戻って回答として投稿してください。
Lorenz Meyer

3
私はまだしていません-このアプローチの落とし穴を他の人に指摘したいだけです。
Yehosef 2015

それは本当に作曲家のインストールのフラグであるべきです..のようなもの--prune
Yehosef

1
アイデアが気に入ったら投票できます-github.com/composer/composer/issues/3751
Yehosef

20

次のコマンドは完全に同じことを行います

rm -rf vendor

composer install 

2
これは最もクリーンなオプションのようです。vendorsディレクトリを削除し、Composerにすべてを最新の状態にさせます。
Machavity 2018

4
これはnpm "save my day"スタイルです;)
r34 '27

composer install未使用のパッケージが自動的に削除されます
Yidir

10

実行するだけでcomposer installvendorディレクトリにcomposer.lockファイルの依存関係が反映されます。

言い換えると、それは、で欠落してcomposer.lockいるベンダーをすべて削除します。

これを実行する前に、コンポーザ自体を更新してください。

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