Laravelのcomposer.lock・composer.jsonの役割とcontent-hash

Laravelのcomposer.lock・composer.jsonの役割とcontent-hash

4 回閲覧されました

みなさんこんにちは、jonioです。

composer.lock・composer.jsonの役割が曖昧になっていたので今回はアウトプットの記事になります。

Laravelの無料学習サイトを作りました

Laravelを勉強したい人向けの無料の学習サイトを作りました。

ここからリンクに飛べますのでぜひ利用してください。

composer.lockとは

ライブラリをインストールする為に存在します。

「composer install」をした時にcomposer.lockの内容を元にライブラリをvendorフォルダにインストールします。

compser.lockが存在しない場合はcomposer.jsonの内容を元にcomposer.lockを作成します。

composer.lockは削除してもいいですが勝手に編集してはいけない内容があります。(理由は後述)

composer.jsonとは

インストールするライブラリの内容とバージョンを編集する為に存在します。

内容を編集して「composer update」をするとcomposer.jsonの内容を元にcompoer.lockの内容を書き換えます。

そして「composer install」をすると新しくcomopser.jsonに記載したライブラリや別のバージョンのインストールができます。

だからcomposer.jsonを編集したら「composer update」は必須になります。

content-hashとは

composer.lockには下記の記載があります。(値はランダムです)

"content-hash": "abc123def456..."

content-hashの値はcomposer.jsonの内容に該当する一意の値です。

例えで言うとマンションの部屋に該当する鍵です。

鍵は部屋ごとに違いますよね。

「composer install」をした時にcomposer.jsonに該当するかを調べます。

手動で編集をした場合「composer install」をした時に「content-hash」の内容がcomposer.jsonの物かを調べて異なるので警告はでますが「composer install」は動作して編集した「content-hash」はそのまま適用されます。

だた「content-hash」の値に差分が出るので個人開発の場合はいいですがチーム開発の場合はなぜ値が違うのかと聞かれるので勝手に編集しない方がいいです。