PHPのパッケージ管理システムであるComposerを使うと、公開されているパッケージを利用できます。収集したパッケージはvenderディレクトリへ保存します。
通常はPackagistから取得しますが、他のプロジェクトを取り込みたいので方法を考えました。
全体の流れ
プロジェクト「hoge」が別プロジェクト「fuga」を取り込むとします。
別プロジェクト「fuga」は更に別プロジェクト「piyo」を取り込むものとします。
各プロジェクトのディレクトリ構造は、以下の通りとします。
hoge
|-composer.json
|-module
|-m-fuga
|-composer.json
|-m-piyo
|-composer.json
composer.json
それぞれのプロジェクトのcomposer.jsonは、以下のような感じになります。
hogeでcomposerをupdateするには、piyoのリポジトリ情報も必要のようです。
{
"name": "vender/hoge",
"type": "project",
"repositories": [
{
"type": "path",
"url": "../module/m-fuga/",
"options": {
"symlink": false
}
},
{
"type": "path",
"url": "../module/m-piyo/",
"options": {
"symlink": false
}
}
],
"require": {
"vender/fuga": "@dev"
},
"autoload": {
"psr-4": {
"Hoge\\": "src/"
}
}
}
{
"name": "vender/fuga",
"type": "library",
"repositories": [
{
"type": "path",
"url": "../m-piyo/",
"options": {
"symlink": false
}
}
],
"require": {
"vender/piyo": "@dev"
},
"autoload": {
"psr-4": {
"Fuga\\": "src/"
}
}
}
{
"name": "vender/piyo",
"type": "library",
"autoload": {
"psr-4": {
"Piyo\\": "src/"
}
}
}
CakePHPのプラグイン
fugaとpiyoがプラグインの場合は、リポジトリが以下のような感じになります。
hoge
|-composer.json
|-module
|-m-fuga
|-plugins
|-PluginFuga
|-composer.json
|-m-piyo
|-plugins
|-PluginPiyo
|-composer.json
{
"name": "vender/hoge",
"type": "project",
"repositories": [
{
"type": "path",
"url": "../module/m-fuga/plugins/PluginFuga/",
"options": {
"symlink": false
}
},
{
"type": "path",
"url": "../module/m-piyo/plugins/PluginPiyo/",
"options": {
"symlink": false
}
}
],
"require": {
"vender/fuga": "@dev"
},
"autoload": {
"psr-4": {
"Fuga\\": "src/"
}
}
}
{
"name": "vender/fuga",
"type": "library",
"repositories": [
{
"type": "path",
"url": "../m-piyo/plugins/PluginPiyo/",
"options": {
"symlink": false
}
}
],
"require": {
"vender/piyo": "@dev"
},
"autoload": {
"psr-4": {
"Fuga\\": "src/"
}
}
}
{
"name": "vender/piyo",
"type": "library",
"autoload": {
"psr-4": {
"Piyo\\": "src/"
}
}
}
コメント