リリースされたLaravel 6.0をインストールした。
2019年9月3日、Laravel 6.0がリリースされました!
Laravel 6.0は、2017年8月にリリースされたLaravel 5.5以来のLTS(Long Term Support)となります。
当初は2019年8月にリリースされるということでしたので、少し遅れてのリリースとなりました。
現在、日本語訳のドキュメントが整備されているhttps://readouble.comには、まだLaravel 6.0のドキュメントが掲載されていません。(2019年9月5日 削除)
まだ(翻訳中)の文字がありますが、2019年9月5日にLaravel 6.0の日本語訳が掲載されました!
(翻訳中)の文字が取れるのも時間の問題ですね。関係者のみなさま、ご尽力に感謝します。
そこで、英語の公式ドキュメントを参照しながら違いを見てみます。
準備
Laravel 6.0のインストールには、php 7.2以上のバージョンが必要です。7.1系列を使っている人は7.2以上にバージョンアップしましょう。MAMPやXAMPを使っている人はパッケージのアップデートが必要になる場合があります。
合わせて、composer
も最新バージョンにしておきましょう。composer
をアップデートするには、以下のコマンドを実行します。
sudo composer selfupdate
インストール
以前のバージョンと同じようにcomposer create-project --prefer-dist laravel/laravel laravel
でlaravelというディレクトリを作成して、その中に必要なファイルがインストールされます。
インストール直後のphp artisan
の実行結果とcomposer.json
は以下のとおりです。
Laravel Framework 6.0.0
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
clear-compiled Remove the compiled class file
down Put the application into maintenance mode
env Display the current framework environment
help Displays help for a command
inspire Display an inspiring quote
list Lists commands
migrate Run the database migrations
optimize Cache the framework bootstrap files
preset Swap the front-end scaffolding for the application
serve Serve the application on the PHP development server
tinker Interact with your application
up Bring the application out of maintenance mode
auth
auth:clear-resets Flush expired password reset tokens
cache
cache:clear Flush the application cache
cache:forget Remove an item from the cache
cache:table Create a migration for the cache database table
config
config:cache Create a cache file for faster configuration loading
config:clear Remove the configuration cache file
db
db:seed Seed the database with records
db:wipe Drop all tables, views, and types
event
event:cache Discover and cache the application's events and listeners
event:clear Clear all cached events and listeners
event:generate Generate the missing events and listeners based on registration
event:list List the application's events and listeners
key
key:generate Set the application key
make
make:channel Create a new channel class
make:command Create a new Artisan command
make:controller Create a new controller class
make:event Create a new event class
make:exception Create a new custom exception class
make:factory Create a new model factory
make:job Create a new job class
make:listener Create a new event listener class
make:mail Create a new email class
make:middleware Create a new middleware class
make:migration Create a new migration file
make:model Create a new Eloquent model class
make:notification Create a new notification class
make:observer Create a new observer class
make:policy Create a new policy class
make:provider Create a new service provider class
make:request Create a new form request class
make:resource Create a new resource
make:rule Create a new validation rule
make:seeder Create a new seeder class
make:test Create a new test class
migrate
migrate:fresh Drop all tables and re-run all migrations
migrate:install Create the migration repository
migrate:refresh Reset and re-run all migrations
migrate:reset Rollback all database migrations
migrate:rollback Rollback the last database migration
migrate:status Show the status of each migration
notifications
notifications:table Create a migration for the notifications table
optimize
optimize:clear Remove the cached bootstrap files
package
package:discover Rebuild the cached package manifest
queue
queue:failed List all of the failed queue jobs
queue:failed-table Create a migration for the failed queue jobs database table
queue:flush Flush all of the failed queue jobs
queue:forget Delete a failed queue job
queue:listen Listen to a given queue
queue:restart Restart queue worker daemons after their current job
queue:retry Retry a failed queue job
queue:table Create a migration for the queue jobs database table
queue:work Start processing jobs on the queue as a daemon
route
route:cache Create a route cache file for faster route registration
route:clear Remove the route cache file
route:list List all registered routes
schedule
schedule:run Run the scheduled commands
session
session:table Create a migration for the session database table
storage
storage:link Create a symbolic link from "public/storage" to "storage/app/public"
vendor
vendor:publish Publish any publishable assets from vendor packages
view
view:cache Compile all of the application's Blade templates
view:clear Clear all compiled view files
{
"name": "laravel/laravel",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.2",
"fideloper/proxy": "^4.0",
"laravel/framework": "^6.0",
"laravel/tinker": "^1.0"
},
"require-dev": {
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^3.0",
"phpunit/phpunit": "^8.0"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
}
}
特筆すべき点として、artisan
からmake:auth
がなくなっていることと、phpunit
のバージョンが8.0
に変更になっていることが挙げられます。
Authenticationを見てみると、Install the laravel/ui Composer package and run php artisan ui vue --auth in a fresh Laravel application.との記述があります。
そこで、composer require laravel/ui
を実行して、laravel/uiをインストールして、php artisan
を実行すると、以下の行が増えました、
ui
ui:auth Scaffold basic login and registration views and routes
php artisan ui:auth
を実行すると、スカフォールディングを生成してくれるとのことです。
さっそく、実行してみましょう。
php artisan ui:auth
Authentication scaffolding generated successfully.
ls resources/views/
auth/ home.blade.php layouts/ welcome.blade.php
cat resources/sass/app.scss
//
認証関係のファイルが生成されていることが確認できましたが、resources/sass/app.scss
はまだ空のままです。
次に、php artisan help ui
を実行してみます。
Description:
Swap the front-end scaffolding for the application
Usage:
ui [options] [--]
Arguments:
type The preset type (bootstrap, vue, react)
Options:
--auth Install authentication UI scaffolding
--option[=OPTION] Pass an option to the preset command (multiple values allowed)
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
php artisan ui --auth
を実行すると、bootstrap
、vue
、react
などのスカフォールディングをインストールできるとのことです。
さっそく、実行してみます。
php artisan ui --auth bootstrap
Bootstrap scaffolding installed successfully.
Please run "npm install && npm run dev" to compile your fresh scaffolding.
The [auth/login.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y
The [auth/passwords/email.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y
The [auth/passwords/reset.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y
The [auth/register.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y
The [auth/verify.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y
The [home.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y
The [layouts/app.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
> y
Authentication scaffolding generated successfully.
cat resources/sass/app.scss
// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');
// Variables
@import 'variables';
// Bootstrap
@import '~bootstrap/scss/bootstrap';
resources/sass/app.scss
にbootstrapのセットアップがインストールされたことが確認できました。
vue
やreact
を使いたい場合には、bootstrap
に代えて指定すれば、同じようにインストールされると思います(未確認)。
npm install && npm run production
を実行すると、フロントエンド環境をコンパイルすることができました。
アップグレード
クリーンインストールした際のcomposer.json
の内容を参考に、tiny-services.comの開発環境を5.8から6.0にアップグレードします。
アップグレードの注意点については、Upgrade Guideに記載があるので、問題があったら確認します。
composer update
によるアップグレード処理では、spatie/laravel-db-snapshots
が未対応のためにアップグレードできなかったため、いったん、composer.json
から削除しました。
spatie/laravel-db-snapshots
もLaravel 6.0に対応したので、composer.json
から削除することなくアップグレードできます。
次にひととおり、機能の確認を行いました。すると、ブラウザ上にMethod Illuminate\Translation\Translator::getFromJson does not exist.
というエラーが表示されました。
これについては、Upgrade GuideのLocalization Lang::getFromJson Methodに記載があります。
それでも、特に関係するようなところに手を入れていない場合には、Laravelを6.0にアップグレードしたにも関わらず、viewが古いままになっていることが原因の可能性があります。
私の場合、php artisan view:clear
でviewのキャッシュを削除してあげると、エラー表示が消えました。
tiny-services.comの開発環境では、これ以外の問題は特に見つかっていないので、もう少し動作確認をしたら、本番環境も5.8
から6.0
にアップグレードする予定です。
Laravel 6.0では、UIのスカフォールディングが標準パッケージから分離されたため、他のフロントエンドフレームワークがサポートされる道が開けたのではないでしょうか。
そうであるなら、フロントエンドフレームワークの技術進歩が著しい現在では、とてもすばらしいニュースだと思います。