composer installとcomposer updateの違い

2042 ワード

しかし、どのように「彼らをインストールする」かについては、初心者には分からないかもしれません.ネット上の答えはcomposer installcomposer updateとあり、どちらも依存をダウンロードしてインストールすることに成功したようだが、彼らはいったいどんな違いがあるのだろうか.
 
まず明らかにしなければならないことは、すべての依存がcomposer.jsonに定義されており、マニュアルには基本的な使い方と例が示されています.バージョン番号を指定するときに、正確なバージョンを指定する必要はありません.同じcomposer.jsonに対して、私たちが異なる時点で引き出した依存ファイルが異なる可能性があります(composerは条件を満たす場合に最新の依存を引き出すため)、いくつかの異常な状況を引き起こす可能性があります.composer updatecomposer installはまさにこの問題を解決するために現れたものである.composer updateを実行すると、composerはcomposer.jsonで指定された依存を読み取り、分析し、条件に合致する最新バージョンの依存を引き出します.その後、彼は引き出した依存をvendorディレクトリの下に入れ、引き出した依存の正確なバージョン番号をcomposer.lockファイルに書き込む.composer installが実行することは非常に類似しており、最初のステップでのみ差があります.ローカルにcomposer.lockがすでに存在する場合、composer.lockではなくcomposer.jsonを読み取り、これを基準にダウンロード依存します.あなたが地元にcomposer.lockがないとき、そのしたことはcomposer updateとは違いません.
これは、地元にcomposer.lockがあれば、どのくらい経っても同じ依存になることを保証することができます.プロジェクトのバージョン管理に組み込むと、プロジェクトのすべての人、すべてのコンピュータ、どのシステムでも、潜在的な依存が導入に与える影響を減らすために、同じ依存を引き出すことができます.もちろん、あなたが使用すべきコマンドはcomposer installであることを覚えておいてください.
では、いつcomposer updateを使うべきですか?依存関係を変更すると、依存が追加されても、依存バージョンが変更されても、依存が削除されても、composer installを実行すると変更はありませんが、警告メッセージが表示されます.
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
phpが私が依存を修正したことをどのように知っているのか、あるいはcomposer.lockが期限切れになったことを知りたい人もいるかもしれません.簡単です.composer.lockを開くと、hashフィールドが表示されます.これは、当時対応していた依存ハッシュ値です.値が一致しなければ、変更が発生したことは自然にわかります.
この時、あなたはcomposer updateを通じてあなたの依存を更新するべきです.
他のインストール済みの依存に影響を与えたくない場合は、変更した部分だけを更新する場合は、ホワイトリストを指定して更新する範囲を決定することができます.たとえば、composer update monolog/monologはmonolog/monologという依存だけを更新し、他の依存は更新があっても無視されます.
 
転載先:https://xia.moe/archives/introduce-to-composer-install-and-update/