ComposerはオンラインのレポジトリであるPackagistにホスティングされたパッケージをrequireするのが通常の使い方だが、ローカルのパッケージをrequireすることもできる。この機能は、自作のライブラリをPackagistに公開する前に、composerでインストールを試して使ってみたりする用途に使える。
Composerでローカルのパッケージを使用する方法
Composerでローカルのパッケージを使用するには、ローカルのパッケージを使いたい側のcomposer.jsonにrepositories
を足す。repositories
は配列で、その中にtype
が"path"
のリポジトリ設定を追加する。url
は絶対パスでも相対パスでも構わない。相対パスの場合は、ローカルのパッケージを使いたい側のcomposer.jsonからの相対パスにする。options.symlink
はfalse
にすると、ローカルパッケージをcomposer install
したときにシンボリックリンクではなく、コピーして持ってくるようになる。
{
"name": "suin/main-project",
"repositories": [
{
"type": "path",
"url": "../LocalPackage",
"options": {
"symlink": false
}
}
],
"require": {
"suin/local-package": "dev-master"
}
}
一方のローカルパッケージのcomposer.jsonは特に細工する必要はない。
{
"name": "suin/local-package",
"autoload": {
"psr-4": {
"Suin\\ComposerUsingLocalRepository\\LocalPackage\\": "src/"
}
}
}
ローカルパッケージを使いたい側のcomposer.jsonを書いたら、composer installすればローカルパッケージが入ってくる:
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing suin/local-package (dev-master): Mirroring from ../LocalPackage
Writing lock file
Generating autoload files
ちなみに完全なサンプルコードはGitHubに公開しているので、参考にされたし。