WEBOPIXEL

Laravel9から10にアップデートする方法

Laravelロゴ

Posted: 2023.02.24 / Category: PHP / Tag: 

Laravel10がリリースされましたね。
既存のLaravel9で動いているやつを10にアップデートしてみたのでメモです。

Sponsored Link

現在のバージョン確認

$ 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-stabilitystableになっています。

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にはvitelaravel-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でフロントと管理画面のビルドを分ける方法