基本に戻ってプロジェクト作成部分を自分がどうやってるか。
世の中には初めてLaravel使ったとか一つのプロジェクトしか見てなくて過剰に盛ってる記事が多すぎる。
事前準備
- PHP7.2
- composer
- git
- node.js
- yarn
- vagrant
- PhpStorm
この辺はいちいち説明しなくても用意できてる前提。
インストール
https://readouble.com/laravel/5.6/ja/installation.html
laravel/installerを使うのでまだ入れてない場合はcomposerでグローバルにインストール。
composer global require "laravel/installer"
後はlaravelコマンドで作成。
laravel new new-project
cd new-project
ローカルサーバー
https://readouble.com/laravel/5.6/ja/homestead.html
Homesteadをプロジェクトごとにインストール。プロジェクトごとに分けるのが結局一番良かった。
composer require laravel/homestead --dev
//Mac / Linux
php vendor/bin/homestead make
//Windows
vendor\bin\homestead make
Homestead.yamlが作られるので環境に合わせて変更。
ipとドメイン程度だけど。
vagrant up
boxのダウンロードが必要な時は時間かかるけど普段はストレスなく使える。
hostsの設定もして表示できれば成功。
php artisan serveは簡易的な動作確認用なので使わない。
ValetはMacのみなので他の人も関わる場合は選択肢に入れられないけど実際に使ってみても意外と手軽じゃない。
Dockerを開発環境で使う気は全くない。あれは少しのバージョン違いで動かなくなるRailsには必要だけどLaravelではほとんど意味がない。なんとなくでDocker使ってる例をよく見るけどちゃんと考えて本当に必要なのかを判断できてるのは見たことない。
もちろん本番環境で使うかは別の話。
設定
https://readouble.com/laravel/5.6/ja/configuration.html
configや.envの設定はお好みで。最初はtimezoneくらいしか変えることはないけど。
.env
php artisan migrateをVagrantの外から実行できるようにするためDB_HOST=をHomestead.yamlのipと同じにする。
ドキュメントには書いてない。
https://readouble.com/laravel/5.6/ja/migrations.html#running-migrations
認証
https://readouble.com/laravel/5.6/ja/authentication.html
デフォルトのviewはwelcomeしかないけどphp artisan make:authで作られるファイルまでがデフォルトと思っている。
https://github.com/laravel/framework/tree/5.6/src/Illuminate/Auth/Console/stubs/make
app.jsの#appは
const app = new Vue({
el: "#app"
});
layouts/app.blade.phpのid="app"のこと
<div id="app">
</div>
php artisan make:authしないとlayouts/app.blade.phpがないのでVue.jsを表示する部分がない。make:authしなかったせいでLaravelでのVueの使い方を間違えてる事例をよく見る。
ユーザー登録機能とかを使わないつもりでもここまではやる。
まとめ
- laravel new
- Homestead
- make:auth
主な工程はこの3つだけ。何回新規に作ったか忘れるくらい作ってるので無駄なことはしない。
これで基本的なアプリはできてるので後はおまけ。
フロントエンドプリセット
https://readouble.com/laravel/5.6/ja/frontend.html
https://github.com/laravel-frontend-presets
Bootstrap以外を使うなら変更。
なお、この作業は新規プロジェクト作成直後にしかやってはいけない。ごそっとファイル入れ替えてるだけだから開発が進んでからやると吹き飛ばされる。
フロント周り
yarn
yarn prod
全部設定済みなので必要に応じて変更するだけ。
バージョン付けは使いたいのでwebpack.mix.jsに.version()追加してviewをmix()に変更はいつもやる。
https://readouble.com/laravel/5.6/ja/frontend.html#writing-vue-components
Vue.js使うならresources/assets/js/componentsにVueコンポーネントを作ってapp.jsで登録すればLaravelのview内でどこでも使える。
Laravel+Vue.jsはここから始めればいい。最初からSPAなんて目指すとたぶん挫折する。
最初からこれだけ用意されてるのになぜか無視してVueコンポーネント使ってない会社を見かけるけどなんでそんな無意味なことをやってるのか全く理解できない。Vueコンポーネント使えば{{}}問題もないしScoped CSSも使えるしで一番良い。ベストプラクティスを無視してはいけない。
composer.json
barryvdh/laravel-debugbarとかbarryvdh/laravel-ide-helperとかいつも使ってるものの追加。
この辺はもはやコピペ。
ide-helperのREADMEにはcomposer.jsonのpost-update-cmdに書いて自動実行させるように書いてあるけどこれは別に無視していい。自動実行させると本番環境へのデプロイ時に困るので必要な時に手動で実行。
自分の場合はpackage.jsonに書いてる。PhpStormではこっちのほうがすぐに実行できる。
"scripts": {
"ide-helper:meta": "php artisan ide-helper:meta",
"ide-helper:generate": "php artisan ide-helper:generate",
"ide-helper:models": "php artisan ide-helper:models -N"
},
.editorconfig
https://github.com/laravel/framework/blob/5.6/.editorconfig
Laravelを参考にするなりして好みで。
これもコピペで同じファイル使い回すだけ。
【追記】その後デフォルトで追加された。
StyleCI
GitHubで公開してる場合のみ。
https://styleci.io/
.styleci.ymlはPSR2にするだけ。
preset: psr2
終わり
全部にURL書いてるように全部ドキュメントに書いてあることでしかない。
検索して変な記事読む前にドキュメントを最初から最後まで全部読むべき。
日々の作業
- vagrantの起動/終了
- composer update
npm script
辺りはPhpStormでやってる。alias cu="composer update" alias yu="yarn upgrade"
これを登録してPhpStorm起動するまでもない時はcuですっと更新。