記事のタイトルだけ見ると、すごく、ありふれた内容だと思います。
参考にした記事
使用したバージョン
Name | Version |
---|---|
PHP | v7.4.15 |
Composer | v2.0.11 |
ファイル構造
. ├── example │ <省略> │ ├── composer.json │ <省略> └── packages └── fossa └── foo └── composer.json
example
の中身は、例えば、laravel new example
したとします。
ローカルパッケージで、fossa/foo
を作成したとします。
試してみましょう
手順1
example
フォルダ内で、下記のコマンドを実行します。
composer config repositories.local '{"type": "path", "url": "../packages/fossa/foo"}' --file composer.json
手順2
手順1と同じく、example
フォルダ内で、下記のコマンドを実行します。
composer require fossa/foo
実行結果
Using version dev-master for fossa/foo ./composer.json has been updated Running composer update fossa/foo Loading composer repositories with package information Updating dependencies Lock file operations: 2 installs, 0 updates, 0 removals - Locking fossa/foo (dev-master) - Locking laravel-lang/lang (8.0.3) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 2 installs, 0 updates, 0 removals - Downloading laravel-lang/lang (8.0.3) - Installing laravel-lang/lang (8.0.3): Extracting archive - Installing fossa/foo (dev-master): Symlinking from ../packages/fossa/foo
fossa/foo
の中で、laravel-lang/lang
を使っているので、laravel-lang/lang
も、インストールされています。
composer.jsonの例(部分のみ)
"require": { "php": "^7.3|^8.0", "fossa/foo": "dev-main", "fideloper/proxy": "^4.4", "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0.1", "laravel/framework": "^8.12", "laravel/tinker": "^2.5" }, "repositories": { "local": { "type": "path", "url": "../packages/fossa/foo" } }
しかし
Info
前述だと、ローカルパッケージの追加が出来ず、一つしかインストール出来ません。
いくつか、ローカルパッケージをインストールしたい場合は、下記の通りです。
composer update
composer.jsonの一部
"require": { "fossa/foo": "dev-main", "fossa/bar": "dev-main", "fossa/baz": "dev-main", }, "repositories": [ { "type": "path", "url": "../packages/fossa/foo" }, { "type": "path", "url": "../packages/fossa/bar" }, { "type": "path", "url": "../packages/fossa/baz" } ]
おそらく、Composer v2.1以降だと、下記の記述で良いみたい。
"require": { "fossa/foo": "dev-main", "fossa/bar": "dev-main", "fossa/baz": "dev-main", }, "repositories": [ { "type": "path", "url": "../packages/*" } ]