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のインフラ的な位置付けなので、今後も注目していきたいですね!

 

この記事のカテゴリ

プログラミング

この記事のタグ

PHP

Socialシェアボタン

スポンサーリンク