- Composer.json: Composer.jsonは、プロジェクトの依存関係とそのバージョンを定義するための設定ファイルです。このファイルには、プロジェクトが依存するパッケージの名前とバージョンの範囲を指定します。また、パッケージの追加情報やオートローディングの設定なども含めることができます。
以下は、Composer.jsonの例です。
{
"name": "my-project",
"require": {
"vendor/package1": "^1.0",
"vendor/package2": "2.*"
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
- Composer.lock: Composer.lockは、Composer.jsonを基に生成されるファイルであり、インストールされた実際のパッケージとそのバージョンを記録します。このファイルは手動で編集する必要はなく、Composerが自動的に更新します。
Composer.lockの主な目的は、プロジェクトが再現可能な状態であることを保証することです。つまり、同じ環境でプロジェクトを再構築する際に、Composer.lockに記録されたパッケージとバージョンが使用されます。
以下は、Composer.lockの例の一部です。
{
"packages": [
{
"name": "vendor/package1",
"version": "1.2.0",
"source": {
"url": "https://github.com/vendor/package1.git",
"type": "git",
"reference": "abcdef1234567890"
}
},
{
"name": "vendor/package2",
"version": "2.1.3",
"source": {
"url": "https://github.com/vendor/package2.git",
"type": "git",
"reference": "1234567890abcdef"
}
}
]
}
Composer.lockは、依存関係の解決とバージョンの固定に重要な役割を果たします。プロジェクトの依存関係が変更された場合、ComposerはComposer.lockを基に依存関係を再解決し、新しいパッケージのバージョンをインストールします。
しかし、注意点としてComposer.lockをバージョン管理システム(例:Git)で共有する必要があります。他の開発者がプロジェクトをクローンしたり更新したりする際に、Composer.lockに記録されたパッケージとバージョンが正確に再現されるためです。
以上がComposer.jsonとComposer.lockの違いについての解説です。これらのファイルを適切に管理することで、PHPプロジェクトの依存関係とバージョン管理を効果的に行うことができます。