web-dev-qa-db-ja.com

composer.lock:どのように機能しますか?

私はこの部分を理解しようとしています: http://getcomposer.org/doc/02-libraries.md#lock-file

このロックファイルは、このロックファイルに依存する他のプロジェクトには影響しません。メインプロジェクトにのみ影響します」

つまり、プロジェクトPがライブラリAに依存し、ライブラリAがライブラリB v1.3に依存している場合、プロジェクトPはライブラリBのバージョンを気にせず、代わりにB 1.4をインストールする可能性があるということですか?その時のポイントは何ですか?

または、依存関係マネージャーに期待するように、逆のことを意味しますか?

59
HappyDeveloper

Composerの依存関係は、composer.jsonで定義されています。 composer=を初めてインストールするとき、またはcomposer=を更新するときにcomposer.lockというロックファイルが作成されます。

引用されたドキュメントは、ロックファイルのみを参照しています。プロジェクトPがライブラリAに依存し、AがB v1.3。***に依存する場合、誰かが「composer update」を実行してB v1.3.2がインストールされ、プロジェクトにAをインストールするというロックファイルがAに含まれている場合composer.json.lock!ではない)が依存関係を1.3。*に定義しているため、Pはまだ1.3.3をインストールする可能性があります。

ロックファイルには常に正確なバージョン番号が含まれており、テストしたバージョンを同僚に伝えたり、アプリケーションを公開するときに役立ちます。ライブラリの場合、composer.jsonの依存関係情報のみが重要です。

66
naderman

composer.lockは、インストールされている正確なバージョンを記録します。同僚と同じバージョンにいるように。

composer install

  • composer.lockファイルを確認します
  • そうでない場合は、composer.lockファイルを自動生成します(composer updateを使用)
  • composer.lockファイルに記録されている指定バージョンをインストールします

作曲家の更新

  • composer.jsonファイルを確認します
  • 言及されているバージョン基準に基づいて、新しい(最新の)バージョンの可用性を確認します(例:1.12 *)
  • 最新の(上記による)バージョンをインストールします
  • composer.lockファイルをインストール済みバージョンで更新します

だから簡単なチェックリストで。

すべての同僚をあなたと同じバージョンに保ちたい場合...

  • composer.lockをGIT(または所有するVC)にコミットします
  • 他の人にcomposer.lockファイルのそのバージョンを取得するよう依頼してください
  • 常にcomposer installを使用して、正しい依存関係を取得します

システムの依存関係を新しいバージョンにアップグレードする場合

  • Composer.jsonファイルでバージョン仕様を確認してください。
  • composer updateを実行します
  • これにより、composer.lockファイルが最新バージョンに変更されます
  • GIT(またはvcs)にコミットします
  • 他の人に入手してもらい、composer install

以下は非常に良い読書になります
https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file

composer.lockファイルのパワーをお楽しみください!

42

ロックファイルの目的は、インストールされている正確なバージョンを記録して、再インストールできるようにすることです。これは、バージョン仕様が1. *で、同僚がcomposer updateは、1.2.4をインストールし、composer.lockファイルをコミットします(composer install、1.3.0がリリースされている場合でも、1.2.4を取得します。これにより、プロジェクトで作業している全員が同じバージョンを使用できます。詳細はこちら 作曲者:ロックファイルのすべて

3