composerつかいかた
https://getcomposer.org/img/logo-composer-transparent2.png
きみconductorでしょ。
composerとは
PHPの新しめのパッケージ管理ツール。
pear?なにそれおいしいの
基本的にbundlerとかnpmとかのパッケージ管理ツールとおんなじノリで使える。
基本的な流れ
0. composer.jsonをもとにパッケージをインストールしたい
いちばん基本の使い方。composer installするだけ。
code:sh
$ composer install
installコマンドは lockファイルがある場合そちらが優先される 。
lockファイルが無い場合は、composer.jsonを元にlockファイルが作られる。
1. 何かパッケージを追加したい
パッケージの追加には require コマンドを使います。
たとえばImmutable DateTimeを提供している chronos を追加してみよう code:sh
$ composer require cakephp/chronos
これでcomposer.jsonも自動で書き足され、composer.lockも書き換えられます。
2. パッケージをアップデートしたい
updateコマンドを打ちます
code:sh
$ composer update cakephp/chronos
これをやると 依存関係的に赦されている範囲内で バージョンがアップデートされて、json&lockファイルが更新される。
updateコマンドを打つとき、パッケージ名末尾にバージョンを指定できます。
特定のバージョンも指定可能だし、以下のような曖昧な指定も可能です。
code:sh
$ composer update cakephp/chronos:"^1.0"
バージョン指定についてはこの記事を参考に…
3. パッケージを消したい
余計なやつは消しましょう。
code:sh
$ composer remove cakephp/chronos
removeはけっこうガバガバなので関連パッケージとかちゃんと消えないこともある…
4. composer.jsonからlockファイルを更新させたい
"""無""" をアップデートすることで更新させることができる。
code: sh
$ composer update nothing
ハッシュだけアップデートしたい時にも有効。
つまり、installコマンドはlockファイルが優先され、updateコマンドはjsonファイルが優先される。
5. もうどうにもならない
vendor以下を消してinstallしなおしましょう。
code:sh
$ rm -rf vendor
$ composer install
6. 便利コマンド
依存関係のパッケージごとアップデート
往々にしてパッケージ間には依存関係がある。そういうときに以下のオプションをつけておくとだいたいいい感じに解決してくれる。
code:sh
$ composer update cakephp/chronos --update-with-dependencies
これでも失敗した場合、一旦 composer remove でパッケージを消してからupdateコマンドを打つといい感じになる。
何が起きてるか見る
-vvv オプションつけておくと何が起きてるか見れます。
updateコマンドとかあまりに出力少なくて不安になるし自分はだいたいつけて実行してます。