laravel

Upgrade Dari Laravel 10 ke Laravel 11 untuk Existing Project

Juni 24, 2024
0 Komentar
Beranda
laravel
Upgrade Dari Laravel 10 ke Laravel 11 untuk Existing Project


Artikel ini akan membahas langkah-langkah upgrade project laravel 10 ke laravel 11 untuk project yang sedang berjalan.

Laravel 11 rilis 12 Maret 2024, membawa perubahan cukup besar. Namun update laravel 11 ini tidak merubah syntak koding ya, tim laravel lebih kearah merampingkan struktur folder framework. Yaps, laravel 11 bisa menyesuaikan peruntukan dari project yang akan kita kembangkan, mau menjadi full stack atau hanya API saja.

Proses upgrade dari laravel 10 ke laravel 11 untuk project yang sudah ada, menurut saya ada 2 tahapan, yaitu :

  1. Updating Dependencies
  2. Application Structure

Updating Dependencies

Laravel 11 berjalan pada PHP versi 8.2 (minimal). 

Buka file composer.json dan update dependencies sesuai yang kalian gunakan sekarang. sesuaikan versinya seperti dibawah ini :

  • laravel/framework to ^11.0
  • nunomaduro/collision to ^8.1
  • laravel/breeze to ^2.0 (If installed)
  • laravel/cashier to ^15.0 (If installed)
  • laravel/dusk to ^8.0 (If installed)
  • laravel/jetstream to ^5.0 (If installed)
  • laravel/octane to ^2.3 (If installed)
  • laravel/passport to ^12.0 (If installed)
  • laravel/sanctum to ^4.0 (If installed)
  • laravel/spark-stripe to ^5.0 (If installed)
  • laravel/telescope to ^5.0 (If installed)
  • inertiajs/inertia-laravel to ^1.0 (If installed)

Beberapa packages seperti Laravel Cashier Stripe, Passport, Sanctum, Spark Stripe, dan Telescope kita perlu publish vendor untuk file migrationnya. Ini perlu dilakukan jika kita menggunakan package tersebut.


php artisan vendor:publish --tag=passport-migrations
php artisan vendor:publish --tag=sanctum-migrations
php artisan vendor:publish --tag=spark-migrations
php artisan vendor:publish --tag=telescope-migrations

Finally, hapus packagedoctrine/dbal pada composer (jika ada) karena laravel sudah tidak bergantung pada package tersebut.

Application Structure

Laravel 11 memang memperkenalkan struktur aplikasi yang baru. Dalam proses update dari laravel 10 ke laravel 11, tim laravel hanya menyarankan untuk update dependencies saja, untuk migrasi struktur aplikasi “TIDAK DIREKOMENDASIKAN”.

Namun pada tulisan saya kali ini, saya akan berbagi pengalaman bagaimana saya melakukan tindakan terlarang ini, hehehehe….
  • Hapus app/Console/Kernel.php
  • Hapus app/Exceptions/Handler.php
  • Hapus file pada folder Middleware (app/Http/Middleware)




















Pada dasarnya laravel 11 sudah membersihkan Folder Middleware, namun ini bisa tetap digunakan jika semisal memang project existing ada middleware custom. File pada gambar di atas sebenarnya tidak dihapus, namun tidak tampilkan secara default pada struktur laravel 11. Kalian tetap bisa menemukan file-file pada gambar di atas pada folder vendor.

  • Hapus file pada folder Providers (app/Providers/*)



















Semua file provider bawaan laravel 10 sebelumnya dihapus, kecuali AppServiceProvider.php. Jika ada Provider Logic Custom bisa dimasukan ke dalam file AppServiceProvider.php atau file CustomProvider tersebut masuk pada file providers pada folder bootstrap.
  • Update config/app.php





Hapus configurasi tentang providers dan aliases.
  • Update file index.php pada folder public
  <?php
use Illuminate\Http\Request;
define('LARAVEL_START', microtime(true));
// Determine if the application is in maintenance mode...
if (file_exists($maintenance = __DIR__ . '/../storage/framework/maintenance.php')) {
    require $maintenance;
}
// Register the Composer autoloader...
require __DIR__ . '/../vendor/autoload.php';
// Bootstrap Laravel and handle the request...
(require_once __DIR__ . '/../bootstrap/app.php')
    ->handleRequest(Request::capture());
  • Buat file bootstrap/providers.php
<?php
return [
    App\Providers\AppServiceProvider::class,
];
Secara default laravel 11 memindahkan semua providers pada file ini. Kita tetap bisa membuat file provider seperti biasanya (pada folder App/Providers) namun harus tetap di registrasikan pada file bootstrap/providers.php

  • Update bootstrap/app.php , Update core nya disini.
<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__ . '/../routes/api.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        // your middleware
    })
    ->withExceptions(function (Exceptions $exceptions) {
        // your exception
    })->create();
secara default laravel 11 menaruh semua core aplikasi pada file ini. mulai dari configurasi, middleware, exception semua dijadikan satu pada file app.php. Kita akan sering berinteraksi dengan file ini manakala kita akan menambahkan middleware ataupun exception.

Okay, kurang lebih seperti itu perjalanan saya upgrade laravel 10 ke laravel 11 pada project existing. Semoga menjadi ilmu baru buat yang belum tahu, dan jika ada yang baru dari kalian bisa tambahkan di komentar.

BIG THANKS…


References
https://laravel.com/docs/11.x/upgrade
https://laravel.com/docs/11.x/upgrade#updating-dependencies
https://laravel.com/docs/11.x/upgrade#application-structure