thumbnail

composerのscriptsで作業効率化

コマンドを短縮する

いくつかのオプションを付けたコマンドを定義することでコマンドを短縮できます。

例:

"scripts": {
    "phpcs": [
        "phpcs --standard=./phpcs.xml"
    ],
    "phpmd": [
        "phpmd ./app/,./config,./database/factories,./database/seeds,./routes/,./tests/ text phpmd.xml"
    ],
}

定義したコマンドは composer + コマンド名 で実行できます。

composer phpmd

複数のコマンドをまとめる

複数のコマンドをまとめて一つのコマンドにすることが可能です。

例:

"scripts": {
    "ncu": [
        "ncu -u",
        "yarn --audit install",
    ],
    "ide": [
        "php artisan ide-helper:generate --ansi",
        "php artisan ide-helper:models --write --ansi",
        "php artisan ide-helper:meta --ansi"
    ],
}

定義したコマンドを @ + コマンド名で再利用できます。

例:

"scripts": {
    "lint": [
        "@phpcs",
        "@phpmd",
    ],
    "phpcs": [
        "phpcs --standard=./phpcs.xml"
    ],
    "phpmd": [
        "phpmd ./app/,./config,./database/factories,./database/seeds,./routes/,./tests/ text phpmd.xml"
    ],
}
composer lint

定義したコマンドを確認する

composer list

定義したコマンドに説明を追加する

scripts-descriptions で composer list で表示される説明を変更できます。

"scripts-descriptions": {
    "lint": "Lint!!"
}

その他

コマンドイベント

install や update の後などに動作させるスクリプトを定義できます。

if で分岐

ただのシェルスクリプトなので if で分岐させることもできます。

例えばコマンドが使用できるときだけ動作させるみたいなことができます。

"scripts": {
    "post-update-cmd": [
        "if [[ -n $(php artisan list --raw | grep 'ide-helper:generate') ]] && [[ -f .env ]]; then composer ide; fi",
    ],
    "ide": [
        "php artisan ide-helper:generate --ansi",
        "php artisan ide-helper:models --write --ansi",
        "php artisan ide-helper:meta --ansi"
    ],
}

Makefile で 動的にコマンドを変える方法
next article
arrow