Composer・composer.json・composer.lockを調べたまとめ
673 回閲覧されました
みなさんこんにちは、jonioです。
Laravelのアプリを作っていてComposer・composer.json・composer.lockについてちゃんと理解しないと不味い状況になったので調べてまとめてアウトプットの記事になります。
目次
Composerとは
PHPのパッケージ・ライブラリ管理ツールです。
Composerを使うメリットは下記になります。
- パッケージのインストールが楽
- チーム開発でのパッケージ・パッケージのバージョンを統一できる
- パッケージの依存関係を考えなくていい
それぞれ見ていきます。
パッケージのインストールが楽
パッケージ管理ツールを使わずにパッケージAをインストールするとパッケージAを動かすのに必要なパッケージを全て手動でインストールしないといけないので手間がかかって大変ですがパッケージ管理ツールを使うとコマンド一発でインストールが完了します。
チーム開発でのパッケージ・パッケージのバージョンを統一できる
チーム開発において手動でパッケージをインストールすると間違ったパッケージをインストールしたり違うバージョンをインストールする可能性が高いです。
しかしパッケージ管理ツールを使うならチームでGitを使ってcomposer.lockを共有する事で共通のパッケージと同じバージョンを使うのが簡単にできます。
パッケージの依存関係を考えなくていい
あるパッケージを直接インストールするならそれを使うのに必要なパッケージもインストールしないといけなくバージョンも考えないといけません。
しかしパッケージ管理ツールを使えばパッケージをインストールするとそれを動かすのに必要なパッケージも自動的にインストールできるのでパッケージ同士の依存関係を考えなくて済みます。
これがComposerです。
次はcomposer.jsonとcomposer.lockを見ていきます。
composer.jsonとcomposer.lock
Composerがライブラリ・パッケージを管理する為に必要なファイルがcomposer.jsonとcomposer.lockですが役割が違います。
Composerをインストールするとプロジェクトの直下にcomposer.jsonが作成されて「composer install」をするとcomposer.jsonに書かれた情報を基にしてパッケージやライブラリがプロジェクト直下にあるvendorフォルダの中にまとめて作成されます。
この時にcomposer.lockがプロジェクト直下に同時に作成されます。
composer.lockにはcomposer installをした時に参照したcomposer.jsonの情報が記載されます。
そして2回目以降のcomposer installはcomposer.jsonを参照します。(万が一最初からcomposer.lockがある場合は1回目のcomposer installでもcomposer.lockを参照してインストールされます)
使用するパッケージの変更やパッケージのバージョン変更
この場合はcomposer.jsonに追加するパッケージの記載・バージョンの変更の記載をして「composer update」をすればcomposer.jsonの情報を基にライブラリやパッケージが最新の状態に書き変わってcomposer.lockが最新の状態に更新されます。
と言った所です。