Tutorial step-by-step ini mengajarkan cara menginstal Laravel 11 terbaru, mengkonfigurasi Vite, mengintegrasikan Breeze untuk otentikasi, serta menambahkan Sanctum untuk API token, semuanya dengan best practice 2026.
1. Prasyarat
- PHP >= 8.3
- Composer 2.x
- Node.js >= 20 dengan npm atau Yarn
- Database MySQL/PostgreSQL
2. Instalasi Laravel 11
composer create-project laravel/laravel:^11.0 my-project
cd my-project
Perintah di atas mengunduh Laravel 11 versi stabil terbaru.
3. Setup Vite (Asset Bundler modern)
- Instalasi dependensi front‑end:
npm install
# atau dengan Yarn
# yarn install
- Pastikan
vite.config.jsberisi plugin Laravel:
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,
}),
],
});
Jalankan dev server:
npm run dev
4. Instalasi Breeze (Starter Kit Otentikasi)
composer require laravel/breeze --dev
php artisan breeze:install vue
# atau react, vue, blade sesuai kebutuhan
npm install && npm run dev
Breeze menambahkan migrasi, model User, route, controller, dan view dasar.
5. Migrasi Database
php artisan migrate
Pastikan .env berisi kredensial DB yang valid.
6. Konfigurasi Sanctum untuk API Token
- Instalasi paket:
composer require laravel/sanctum
- Publish konfigurasi dan migrasi:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
- Tambahkan middleware pada
apistack diapp/Http/Kernel.php:
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
- Buatan token contoh (misalnya di controller AuthController):
use Illuminate\Http\Request;
use App\Models\User;
public function login(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
]);
$user = User::where('email', $request->email)->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
return response()->json(['message' => 'Invalid credentials'], 401);
}
$token = $user->createToken('api-token')->plainTextToken;
return response()->json(['token' => $token]);
}
7. Menambahkan Route API yang Dilindungi Sanctum
use App\Http\Controllers\ProfileController;
Route::middleware('auth:sanctum')->group(function () {
Route::get('/user/profile', [ProfileController::class, 'show']);
});
8. Best Practice Modern (2026)
- Environment Segregation: Gunakan
.env.examplelengkap, dan jangan pernah commit.envke VCS. - Typed Routes: Manfaatkan
php artisan route:cachedanphp artisan view:cachepada production. - Docker Development: Jalankan Laravel dengan container resmi (
laravelphp/php-fpm,node,nginx) untuk konsistensi lintas tim. - Static Analysis: Tambahkan
phpstandanlarastanpada CI untuk deteksi bug sejak dini. - Testing: Tulis Feature Test untuk endpoint Sanctum menggunakan
sanctumguard.public function test_user_can_access_protected_route() { $user = User::factory()->create(); $token = $user->createToken('test')->plainTextToken; $response = $this->withHeaders([ 'Authorization' => "Bearer $token", ])->getJson('/api/user/profile'); $response->assertOk(); }
9. Deploy ke Production
- Set
APP_ENV=productiondanAPP_DEBUG=falsedi .env. - Build assets dengan Vite:
npm run build
- Cache config & routes:
php artisan config:cache
php artisan route:cache
php artisan view:cache
- Gunakan supervisor atau Laravel Octane (Swoole) untuk performance tinggi.
Dengan mengikuti tutorial ini, Anda memiliki proyek Laravel 11 yang modern, aman, dan siap produksi. Vite memberi proses front‑end cepat, Breeze menyediakan otentikasi UI minimal, dan Sanctum memungkinkan API token yang terstandarisasi. Terapkan best practice seperti Docker, static analysis, dan testing untuk menjaga kualitas kode seiring pertumbuhan aplikasi Anda.
Tutorial lengkap setup Laravel 11 dengan Vite, Breeze, dan Sanctum. Langkah demi langkah instalasi, konfigurasi, contoh kode, serta best practice modern 2026.
Laravel,PHP Framework,Web Development
#Laravel #LaravelIndonesia #PHP #WebDev #Backend
Tidak ada komentar:
Posting Komentar