[Laravel 6.0+] ログイン・登録画面を用意する

Laravel で一般的なWebアプリを作るのにかかせない作業といえばなんでしょうか。といっても色々あるのは間違いないのですが、まあ多くの場合ログイン画面は欲しいものです。

Laravel ではこの認証画面や登録画面の典型的なものをコマンド一つで自動生成することができますが、 Laravel 6.0 ではこの部分が別パッケージに分離されたため追加でパッケージをインストールする必要があります。

パッケージの追加

Laravel 6.0 においてフロントエンドのベーステンプレートのスキャフォールドは laravel/ui パッケージに分離されました。これは composer で簡単にインストールできます。(従来は artisan make:auth コマンドで利用できました)

テンプレートからスキャフォールド

このパッケージを追加すると、ログイン画面・登録画面のスキャフォールド自体は artisan ui:auth コマンドで生成できるようになります。ただし、初期状態のプロジェクトでこれを行ったところで Laravel 6.0 の初期状態では(従来Bootstrapでpublic以下に用意されていた) JS/CSS が同梱されなくなっているためこれを併せて用意する必要があります。

ui:auth だけではスタイルの適用されていない中途半端な画面になる

プロジェクト内で使用したい構成にあわせて以下から選択してください。
なお、vue/react/bootstrap以外にも任意のプリセットを用意したい場合、 \Laravel\Ui\UiCommand にマクロを実装することで追加が可能です。

また、これらで生成したプリセットはコンパイル前の sass, js のみなのでwebpack(laravel-mix)でコンパイルする必要があります。なおこれには当然ながらnode.jsが必要です。

Bootstrap のCSSがビルドされた

なお、--authをつけずにartisan uiコマンドを叩いた場合、ログイン画面の自動生成はされずJS/CSS/package.jsonのスタブのみがコピーされます。別途artisan ui:authを叩けば--authをつけたのと同じ状態になります。

注意点

既存のファイルを上書きします

resources/js/app.jsresources/js/bootstrap.jsresources/sass/app.scssに変更を加えていたりその他生成されるファイルを先に作っていた場合、その内容は容赦なくスタブの内容で上書きされ消えてしまいます。間違えて作業を進めた状態で変更をコミットせずにこのコマンドを再度叩いてしまわないよう注意。

なお、ui:auth分のviewのスタブについては上書きするかどうか確認されます。(ルーティングはダブるようですが……)

yarn.lockやnode_modulesが削除される

すでにyarn.locknode_modulesが存在している場合、プリセットのコピー後にさりげなく消されてしまいます。整合性は取れるんだから消さなくてもいいのに……

document

コメントを残す