Wednesday

18-06-2025 Vol 19

🚀 Create a Global phpdev Command to Launch Laravel + Vite Simultaneously

🚀 Bangun Perintah Global phpdev untuk Meluncurkan Laravel + Vite Secara Bersamaan

Sebagai pengembang PHP, efisiensi adalah kunci. Kita semua mencari cara untuk merampingkan alur kerja kita dan mengurangi waktu yang kita habiskan untuk tugas-tugas berulang. Salah satu contohnya adalah peluncuran proyek Laravel kita, yang seringkali melibatkan menjalankan beberapa perintah secara manual: server PHP built-in Laravel dan server pengembangan Vite. Bayangkan sebuah dunia di mana Anda dapat meluncurkan keduanya dengan satu perintah sederhana: phpdev.

Dalam panduan komprehensif ini, kita akan menyelami langkah-langkah yang diperlukan untuk membuat perintah global phpdev, yang memungkinkan Anda untuk meluncurkan server pengembangan Laravel dan Vite Anda secara bersamaan, meningkatkan produktivitas Anda dan membebaskan Anda untuk fokus pada apa yang paling penting: membangun aplikasi luar biasa.

Mengapa Perlu Membangun Perintah Global?

Sebelum kita masuk ke detail teknis, mari kita membahas mengapa berinvestasi dalam membuat perintah global adalah ide yang bagus:

  • Efisiensi: Hilangkan kebutuhan untuk mengingat dan menjalankan beberapa perintah setiap kali Anda memulai proyek Anda.
  • Konsistensi: Pastikan semua anggota tim menggunakan proses peluncuran yang sama, menghindari kesalahan dan inkonsistensi.
  • Produktivitas: Hemat waktu dan energi mental dengan mengotomatiskan tugas-tugas berulang, memungkinkan Anda untuk fokus pada pengembangan itu sendiri.
  • Dapat Dikustomisasi: Sesuaikan perintah agar sesuai dengan kebutuhan spesifik proyek Anda, menambahkan opsi dan flag sesuai kebutuhan.
  • Peningkatan Alur Kerja: Integrasikan perintah ke dalam alur kerja pengembangan Anda untuk pengalaman yang lebih lancar dan efisien.

Prasyarat

Sebelum memulai, pastikan Anda memiliki prasyarat berikut yang terpasang:

  • PHP: PHP 7.4 atau lebih tinggi (disarankan PHP 8.1+)
  • Composer: Manajer dependensi untuk PHP
  • Node.js: Lingkungan runtime JavaScript (untuk Vite)
  • npm atau Yarn: Manajer paket JavaScript (disarankan npm)
  • Laravel: Kerangka kerja PHP Laravel (proyek yang sudah ada atau proyek baru)
  • Vite: Bundler frontend generasi berikutnya dan server pengembangan

Langkah 1: Membuat Skrip PHP

Pertama, kita perlu membuat skrip PHP yang akan menangani peluncuran server pengembangan Laravel dan Vite. Skrip ini akan menerima argumen dan menjalankan perintah yang sesuai.

Buat file bernama phpdev (tanpa ekstensi) di lokasi yang sesuai, seperti direktori ~/.local/bin Anda (Linux/macOS) atau direktori yang ditambahkan ke variabel lingkungan PATH Anda (Windows). Anda dapat membuat direktori ~/.local/bin jika belum ada dengan perintah mkdir -p ~/.local/bin.

Tambahkan kode berikut ke file phpdev:

#!/usr/bin/env php
  <?php

  // Path ke direktori proyek Laravel Anda
  $projectPath = getcwd();

  // Opsi perintah default
  $phpServerHost = '127.0.0.1';
  $phpServerPort = '8000';

  // Memproses argumen baris perintah
  $options = getopt('', ['host:', 'port:']);

  if (isset($options['host'])) {
      $phpServerHost = $options['host'];
  }

  if (isset($options['port'])) {
      $phpServerPort = $options['port'];
  }

  // Perintah yang akan dijalankan
  $phpCommand = "php -S {$phpServerHost}:{$phpServerPort} -t public";
  $viteCommand = "npm run dev"; // Atau 'yarn dev' jika Anda menggunakan Yarn

  // Menampilkan informasi
  echo "Meluncurkan server pengembangan Laravel di http://{$phpServerHost}:{$phpServerPort}\n";
  echo "Meluncurkan server pengembangan Vite...\n";

  // Menjalankan perintah secara paralel
  $descriptors = array(
      0 => array("pipe", "r"),  // stdin
      1 => array("pipe", "w"),  // stdout
      2 => array("pipe", "w")   // stderr
  );

  // Jalankan server PHP
  $phpProcess = proc_open($phpCommand, $descriptors, $pipes, $projectPath);

  if ($phpProcess === false) {
      echo "Gagal memulai server PHP.\n";
      exit(1);
  }

  // Jalankan server Vite
  $viteProcess = proc_open($viteCommand, $descriptors, $pipes, $projectPath);

  if ($viteProcess === false) {
      echo "Gagal memulai server Vite.\n";
      proc_close($phpProcess); // Tutup server PHP jika Vite gagal
      exit(1);
  }


  // Tutup semua proses setelah selesai (sangat penting untuk mengakhiri proses saat skrip dihentikan)
  register_shutdown_function(function() use ($phpProcess, $viteProcess) {
      if (is_resource($phpProcess)) {
          proc_terminate($phpProcess);
          proc_close($phpProcess);
      }
      if (is_resource($viteProcess)) {
          proc_terminate($viteProcess);
          proc_close($viteProcess);
      }
      echo "\nServer development dihentikan.\n";
  });

  // Tampilkan output dari proses (opsional)
  while ($running = true) {
      $phpStatus = proc_get_status($phpProcess);
      $viteStatus = proc_get_status($viteProcess);

      if (!$phpStatus['running'] && !$viteStatus['running']) {
          $running = false;
          break;
      }

      if (isset($pipes[1])) {
          $phpOutput = stream_get_contents($pipes[1]);
          if (!empty($phpOutput)) {
              echo "[PHP] " . $phpOutput;
          }
      }

      if (isset($pipes[3])) {
          $viteOutput = stream_get_contents($pipes[3]);
          if (!empty($viteOutput)) {
              echo "[Vite] " . $viteOutput;
          }
      }

      usleep(100000); // Istirahat sebentar untuk menghindari penggunaan CPU yang berlebihan
  }

  exit(0);
  

Penjelasan Kode:

  1. #!/usr/bin/env php: Shebang yang menentukan interpreter PHP untuk skrip.
  2. $projectPath = getcwd();: Mendapatkan path direktori kerja saat ini (direktori proyek Laravel Anda).
  3. $phpServerHost dan $phpServerPort: Menentukan host dan port default untuk server pengembangan PHP.
  4. getopt('', ['host:', 'port:']);: Memproses argumen baris perintah untuk opsi --host dan --port. Ini memungkinkan pengguna untuk menentukan host dan port yang berbeda saat menjalankan perintah.
  5. $phpCommand: Perintah untuk menjalankan server pengembangan PHP. Ini menggunakan server PHP built-in Laravel (php -S).
  6. $viteCommand: Perintah untuk menjalankan server pengembangan Vite. Ini biasanya npm run dev atau yarn dev, tergantung pada manajer paket yang Anda gunakan.
  7. proc_open(): Fungsi untuk menjalankan perintah secara asinkron. Ini memungkinkan kita untuk menjalankan server PHP dan Vite secara bersamaan.
  8. register_shutdown_function(): Fungsi yang akan dieksekusi ketika skrip dihentikan (misalnya, dengan Ctrl+C). Ini memastikan bahwa server PHP dan Vite dihentikan dengan benar.
  9. Loop while: Memantau output dari server PHP dan Vite dan menampilkannya di konsol.

Langkah 2: Membuat Skrip Dapat Dieksekusi

Agar skrip phpdev dapat dieksekusi sebagai perintah, Anda perlu memberikan izin eksekusi.

Buka terminal Anda dan jalankan perintah berikut:

chmod +x ~/.local/bin/phpdev
  

Ganti ~/.local/bin/phpdev dengan path yang tepat ke file phpdev Anda.

Langkah 3: Memastikan Skrip Ada di PATH Anda

Untuk menjalankan skrip phpdev dari direktori mana pun, Anda perlu memastikan bahwa direktori tempat skrip berada (misalnya, ~/.local/bin) ditambahkan ke variabel lingkungan PATH Anda.

Linux/macOS:

Biasanya, ~/.local/bin sudah ada di PATH Anda. Untuk memverifikasi, jalankan:

echo $PATH
  

Jika ~/.local/bin tidak ada, tambahkan baris berikut ke file ~/.bashrc, ~/.zshrc, atau file konfigurasi shell Anda yang sesuai:

export PATH="$PATH:$HOME/.local/bin"
  

Setelah mengedit file konfigurasi shell Anda, Anda perlu memuat ulang agar perubahan diterapkan. Jalankan perintah berikut:

source ~/.bashrc
  # Atau
  source ~/.zshrc
  

Windows:

  1. Cari “Edit the system environment variables” di menu Start.
  2. Klik tombol “Environment Variables…”.
  3. Di bagian “System variables”, cari variabel bernama “Path” dan pilih, lalu klik “Edit…”.
  4. Klik “New” dan tambahkan path ke direktori tempat Anda menyimpan skrip phpdev (misalnya, C:\Users\YourUsername\phpdev).
  5. Klik “OK” untuk menyimpan perubahan.

Langkah 4: Uji Perintah phpdev Anda

Sekarang setelah Anda mengonfigurasi perintah phpdev, saatnya untuk mengujinya. Buka terminal Anda, navigasikan ke direktori proyek Laravel Anda, dan jalankan perintah berikut:

phpdev
  

Anda akan melihat output yang menunjukkan bahwa server pengembangan Laravel dan Vite sedang berjalan. Buka browser Anda dan kunjungi http://localhost:8000 (atau host dan port yang Anda tentukan) untuk melihat aplikasi Laravel Anda.

Anda juga dapat menggunakan opsi --host dan --port untuk menentukan host dan port yang berbeda:

phpdev --host=0.0.0.0 --port=8080
  

Tips dan Trik Tambahan

  • Konfigurasi Vite: Pastikan konfigurasi Vite Anda (vite.config.js atau vite.config.ts) dikonfigurasi dengan benar untuk proyek Laravel Anda. Periksa bagian publicDir dan pastikan itu menunjuk ke direktori public di proyek Laravel Anda.
  • Konfigurasi .env: Konfigurasikan file .env proyek Laravel Anda untuk menggunakan host dan port yang benar. Secara khusus, periksa variabel APP_URL.
  • Menangani Kesalahan: Tambahkan penanganan kesalahan ke skrip phpdev Anda untuk memberikan umpan balik yang lebih baik jika terjadi kesalahan. Misalnya, Anda dapat memeriksa apakah perintah npm run dev berhasil dijalankan dan menampilkan pesan kesalahan jika gagal.
  • Otomatisasi Lebih Lanjut: Anda dapat lebih mengotomatiskan proses dengan menambahkan opsi untuk menjalankan perintah lain, seperti migrasi database atau seeders.
  • Penggunaan dengan Docker: Jika Anda menggunakan Docker, Anda dapat menyesuaikan skrip phpdev untuk menjalankan perintah di dalam container Docker Anda.

Contoh Konfigurasi Vite (vite.config.js)

Berikut adalah contoh konfigurasi vite.config.js yang berfungsi dengan baik untuk proyek 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,
          }),
      ],
      server: {
          hmr: {
              host: 'localhost',
          },
      },
  });
  

Contoh Konfigurasi .env (Laravel)

Pastikan variabel APP_URL di file .env Anda diatur ke URL yang benar:

APP_NAME=Laravel
  APP_ENV=local
  APP_KEY=base64:SomeRandomString
  APP_DEBUG=true
  APP_URL=http://localhost:8000

  ...
  

Mengatasi Masalah Umum

  • “Command not found” error: Pastikan bahwa skrip phpdev dapat dieksekusi dan berada di PATH Anda.
  • Server Vite tidak memulai: Periksa konfigurasi Vite Anda dan pastikan tidak ada kesalahan. Periksa juga apakah Anda telah menginstal semua dependensi yang diperlukan (jalankan npm install atau yarn install).
  • Server PHP tidak memulai: Periksa apakah ada proses lain yang sudah menggunakan port yang Anda coba gunakan. Anda dapat mengubah port menggunakan opsi --port.
  • Aplikasi tidak dimuat di browser: Pastikan server PHP dan Vite berjalan dengan benar. Periksa juga konfigurasi APP_URL di file .env Anda.

Keamanan

Meskipun skrip ini terutama digunakan untuk lingkungan pengembangan lokal, penting untuk mempertimbangkan implikasi keamanan:

  • Jangan gunakan dalam produksi: Server pengembangan PHP tidak dirancang untuk digunakan di lingkungan produksi. Gunakan server web seperti Apache atau Nginx untuk melayani aplikasi Anda dalam produksi.
  • Batasi akses: Pastikan bahwa server pengembangan PHP hanya dapat diakses dari mesin lokal Anda. Jangan mengeksposnya ke internet.
  • Periksa input pengguna: Selalu validasi dan sanitasi input pengguna untuk mencegah serangan injeksi.

Kesimpulan

Dengan mengikuti langkah-langkah dalam panduan ini, Anda telah berhasil membuat perintah global phpdev yang meluncurkan server pengembangan Laravel dan Vite Anda secara bersamaan. Ini akan menghemat waktu dan meningkatkan produktivitas Anda, memungkinkan Anda untuk fokus pada apa yang paling penting: membangun aplikasi luar biasa.

Jangan ragu untuk menyesuaikan skrip phpdev agar sesuai dengan kebutuhan spesifik proyek Anda. Anda dapat menambahkan opsi dan flag untuk menjalankan perintah lain, mengkonfigurasi lingkungan pengembangan Anda, atau mengotomatiskan tugas-tugas lainnya. Selamat mengembangkan!

Referensi Tambahan

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *