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 の後などに動作させるスクリプトを定義できます。

Scripts - Composer
A Dependency Manager for PHP

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"
    ],
}

コメント

タイトルとURLをコピーしました