PHPユーザーにお馴染みのパッケージ管理マネージャー "composer" ですが、composerコマンド実行時に任意のコマンド・スクリプトが実行出来ることをご存知でしたか?
composer.jsonファイルにscript項目を追加するとcomposerコマンドを叩いた時に実行されます。
"scripts": {
"post-update-cmd": [
"実行したいスクリプト"
]
},
上記の"post-update-cmd"は "composer update"時に実行する処理です。
それでは、PHPのLight-weightフレームワーク「Slim」のcomposer.jsonファイルを元に説明していきます。
* composer.json (サンプルファイル)
{
"name": "slim/slim",
"type": "library",
"description": "Slim Framework, a PHP micro framework",
"keywords": ["microframework","rest","router"],
"homepage": "http://github.com/codeguy/Slim",
"license": "MIT",
"authors": [
{
"name": "Josh Lockhart",
"homepage": "http://www.joshlockhart.com/"
}
],
"require": {
"php": ">=5.3.0"
},
"suggest": {
"ext-mcrypt": "Required for HTTP cookie encryption"
},
"autoload": {
"psr-0": { "Slim": "." }
},
"scripts": {
"post-update-cmd": [
"composer dump-autoload -o",
"gulp",
"php task.php"
]
},
}
composer.jsonのscript内にコマンドを3つ追加しました。
"composer update"コマンドをコンソール上で実行すると、"composer dump-autoload"が実行され、"gulp"コマンド、その後に"task.php"が実行されます。
上記の例では"compser update"時でしたが、任意のコマンド名も可能です。
* "composer task"を叩いた時にdoSomething.phpを実行
"scripts": {
"task": "php doSomething.php"
}
Slimフレームワークをお使いであればTwigテンプレートも同時に使っている人も多いのではないでしょうか。ついでにtwigのキャッシュの消去とローカルサーバーを起動するコマンドも追加してみましょう。
"scripts": {
"serve" : "php -S 0.0.0.0:8000 -t public public/index.php",
"cleanCache": "rm -rf cache/*"
},
実用的な例では、本番環境のシステムに"production"等の名前のコマンドを作り、実行すると "git pull"を実行した後 "composer dump-autoload -o"で最適化をするなど自由度が広がりますね!
composerはかなり頻繁にアップデートがあるので、知らない間に新機能が追加されていたりもします。
composerは今やPHPのインフラ的な位置付けなので、今後も注目していきたいですね!