Laravel4、インストール時に走るコマンドが邪魔ならば

タグ: Laravel4   Composer  

laravel-ja/laravelはインストールすると、Prepperと言うパッケージも一緒に導入されます。これは、インストールパッケージに、app/config/app.phpファイルで登録するサービスプロバイダーとクラスエイリアスを自動的に追加/削除してくれるものです。

このパッケージを使わなくても、インストール時やアップデート時に、Laravelのコマンドが実行されるようになっています。

コマンド実行時であれ、いくつかのファイルは実行されます。そうしたファイルにエラーが含まれていると、Composerのupdateなどが、正しく出来なくて苦労します。

例えば、routes.phpにPHP文法間違いのコードを入れたままにしていたり、存在しないサービスプロバイダーを登録したままだったり、エイリアスに削除したエイリアス定義が残っていたままであったりする場合です。

こういう場合は、Composerオプションの--no-scriptsが使用できます。これは、アップデート実行後やインストール/アンインストール後に実行するようにcomposer.jsonで指定されているコマンドやプログラムの実行を行わないようにする指定です。

これで、コマンドの実行を阻止すれば、開発中のアプリケーションにエラーが含まれていても、updateなどが行えます。

ただし、インストールの途中でこけると、vendorの中のディレクトリーがクリーンアップされず、中途半端に残ることがあります。例えば、hirokws/prepperをインストールしようとして途中でエラー停止したとします。vendorディレクトリー下にhirokwsフォルダーができていたり、hirokws/preppreフォルダーができていたりしているのに関わらず、composer.lockに反映されていない場合、再度インストールし直そうとしてupdataしても、既にvendor下にディレクトリーができているため、不整合だとしてComposerは止まってしまいます。

そうした場合には、自分でディレクトリーを削除してクリーンアップする必要があります。上記の例であれば、vendor下のhirokwsディレクトリーを削除します。