🦆

Laravel のインストール直後にインストールされたバージョンを自動で表示させる方法

2022/03/24に公開

注意書き

ややマニアな方向けの記事となっております。(改造は、自己責任でお願いします)

前書き

Laravel をインストールした直後、まず私の場合何をするかと言うと、インストールされたバージョンを調べます。もっとも、私に限らず、皆様どこかの段階でするのではないでしょうか。

Laravel のバージョンは、プロジェクトのルートで

php artisan --version
又は
php artisan -V

で調べられる訳ですが、それが地味に面倒と感じる年頃だったりします。😣

そこで、インストール直後にインストールされたバージョンが表示されるようにしてみました。

Laravel のインストール方法には

  • Laravel インストーラを使ってインストール
  • composer を使ってインストール(プロジェクトは既にあり)
  • composer を使ってインストール(新規にインストール)

のパターンがあると思いますが、3番目は流石に本体で対応していただかないと、という感じですので、この記事では対象外です。

言い換えると、

composer create-project laravel/laravel project_name

のインストール方法には非対応です。

composer を使ってインストール(プロジェクトは既にあり)の場合

普段、テンプレートとなるプロジェクトファイルを用意していて、そのプロジェクトファイルを元にインストールする場合です。(vendor だけが無い状態)
この場合、

composer install
又は
composer update

などでインストールすると思います。この場合は、composer.json に以下を追加します。

    "scripts": {
        // 略
        "post-install-cmd": [
            "@php artisan --version"
        ],
        "post-update-cmd": [
            "@php artisan --version"
        ]
    }

これで、インストール直後にインストールされたバージョンが表示されます。

イメージ
Package manifest generated successfully.
81 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan --version
Laravel Framework 9.5.1        ← ここ!

Laravel インストーラを使ってインストールする場合

(注意)
Laravel インストーラをバージョンアップすると、当然ここで行った改造は消えてしまいます。
なお、Laravel Installer 4.2.10 で動作を確認しています。

という事で、

laravel new project_name

でインストールする場合の話です。まず、Laravel インストーラの一式が保存された場所を探します。

私の場合は、ホームディレクトリの .config/composer/vendor/laravel/installer というフォルダにインストールされています(が、皆様の場合 .composer/ 以下などにあるかも知れません)。更にこの中の src/NewCommand.php を改造します。

140行目辺りの $output->writeln(...) の上に、chdir() と runCommands() の2行分追加します。

            chdir($directory);

            $this->runCommands([PHP_BINARY.' artisan --version'], $input, $output);

            $output->writeln(PHP_EOL.'<comment>Application ready! Build something amazing.</comment>');
        }

これで、Laravel インストーラを使ってインストールすると、インストール後、下記のようになります。

イメージ
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
No publishable resources for tag [laravel-assets].
Publishing complete.
> @php artisan key:generate --ansi
Application key set successfully.
Laravel Framework 9.5.1                ← ここ!

Application ready! Build something amazing.

これで開発も捗りますね!😀

ちなみに

Laravel インストーラを使ってインストールし始めたその瞬間、チラリとバージョン情報が見えたりしますが、これは、上記の Laravel フレームワーク(laravel/framework)のバージョンとは別物です。
こちらは、プロジェクトの土台(ユーザー側ファイル)(laravel/laravel)のバージョンですので、通常言う Laravel のバージョンとは別物になります。

 _                               _
| |                             | |
| |     __ _ _ __ __ ___   _____| |
| |    / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V /  __/ |
|______\__,_|_|  \__,_| \_/ \___|_|

Creating a "laravel/laravel" project at "./hoho8"
Info from https://repo.packagist.org: #StandWithUkraine
Installing laravel/laravel (v9.1.2)                       ← ここ!

雑感

上記の Laravel インストーラに改良を加える件、調子に乗ってプルリク送ってみましたが、あえなく空振り(マージされず)に終わりました。
https://github.com/laravel/installer/pull/222

また次回頑張ります。

不具合等見つけたらコメント下さい。

Discussion