現在のバージョン確認
$ 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でフロントと管理画面のビルドを分ける方法

