現在のバージョン確認
$ php artisan --version Laravel Framework 9.16.0
9でも結構古いバージョンですね。。
ちなみにPHPは8.1以上が必要なので、古い場合はアップデートしておいてください。
composer.jsonの更新
最初にcomposer.jsonを更新します。
現在(2023/2/20)は下記構成なのでLaravelの他にも古くなっているところは合わせましょう。
composer.json
"require": { "php": "^8.1", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^10.0", "laravel/sanctum": "^3.2", "laravel/tinker": "^2.8" }, "require-dev": { "fakerphp/faker": "^1.9.1", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^7.0", "phpunit/phpunit": "^10.0", "spatie/laravel-ignition": "^2.0" }, // ... "config": { "optimize-autoloader": true, "preferred-install": "dist", "sort-packages": true, "allow-plugins": { "pestphp/pest-plugin": true, "php-http/discovery": true } }, "minimum-stability": "stable", "prefer-stable": true
下の方も変わってます。
minimum-stability
がstable
になっています。
friendsofphp/php-cs-fixer
を使用していた場合は、laravel/pint
というLaravel用のものが追加されたのでどちらかを残す形でいいかと思います。
ここまでできたらコンポーザーアップデートしてみましょう。
$ composer update
バージョン確認すると10になりました。
$ php artisan --version Laravel Framework 10.0.3
phpunit.xml
phpunit10にした場合はphpunit.xmlのprocessUncoveredFiles
属性を削除します。
(coverage
に付いていた属性です。)
phpunit.xml
<coverage> <include> <directory suffix=".php">./app</directory> </include> </coverage>
テストを実行して問題ないか確認します。
問題があった場合は下記を変更点を参考に修正しましょう。
Upgrade Guide
あとは全体的に型が付けられるようになりました。
不十分かもしれませんが、下記参考に編集してみてください。
Laravel10で追加された型宣言
webpackからViteに変更
Laravel9の古いバージョンだとLaravelMixというwebpackを使用したライブラリを使用しています。
こちらもLaravel10で使用されているViteに変更してみましょう。
Laravel10のpackage.jsonは下記になります。
package.json
{ "private": true, "scripts": { "dev": "vite", "build": "vite build" }, "devDependencies": { "axios": "^1.1.2", "laravel-vite-plugin": "^0.7.2", "vite": "^4.0.0" } }
scripts
はmixを実行していた部分を削除して、viteが実行されるように変更します。
devDependencies
にはvite
とlaravel-vite-plugin
を追記します。
laravel-mix
とかwebpackのライブラリを使用していた場合は削除しておきましょう。
package.jsonの修正が完了したらインストールします。
$ yarn install
webpack.mix.js
ファイルを削除して、vite.config.js
を新しく作成します。
vite.config.js
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.js'], refresh: true, }), ], });
Viteの設定に関しては下記の記事も参考にしてください。
bladeファイルのscc,jsの読み込み部分を下記のように変更します。
@vite(['resources/css/app.css', 'resources/js/app.js'])
デフォルトではviteのビルド先が/public/build
になるので、.gitignore
に追加しておきます。
.gitignore
/public/build
mix-manifest.json,/public/css,/public/jsの項目は必要ないので削除します。
Laravel Viteでフロントと管理画面のビルドを分ける方法