プロジェクトから別のプロジェクトを要求する

cakephp5

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/"
        }
    }
}

コメント

タイトルとURLをコピーしました