🚀 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:
#!/usr/bin/env php
: Shebang yang menentukan interpreter PHP untuk skrip.$projectPath = getcwd();
: Mendapatkan path direktori kerja saat ini (direktori proyek Laravel Anda).$phpServerHost
dan$phpServerPort
: Menentukan host dan port default untuk server pengembangan PHP.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.$phpCommand
: Perintah untuk menjalankan server pengembangan PHP. Ini menggunakan server PHP built-in Laravel (php -S
).$viteCommand
: Perintah untuk menjalankan server pengembangan Vite. Ini biasanyanpm run dev
atauyarn dev
, tergantung pada manajer paket yang Anda gunakan.proc_open()
: Fungsi untuk menjalankan perintah secara asinkron. Ini memungkinkan kita untuk menjalankan server PHP dan Vite secara bersamaan.register_shutdown_function()
: Fungsi yang akan dieksekusi ketika skrip dihentikan (misalnya, dengan Ctrl+C). Ini memastikan bahwa server PHP dan Vite dihentikan dengan benar.- 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:
- Cari “Edit the system environment variables” di menu Start.
- Klik tombol “Environment Variables…”.
- Di bagian “System variables”, cari variabel bernama “Path” dan pilih, lalu klik “Edit…”.
- Klik “New” dan tambahkan path ke direktori tempat Anda menyimpan skrip
phpdev
(misalnya,C:\Users\YourUsername\phpdev
). - 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
atauvite.config.ts
) dikonfigurasi dengan benar untuk proyek Laravel Anda. Periksa bagianpublicDir
dan pastikan itu menunjuk ke direktoripublic
di proyek Laravel Anda. - Konfigurasi .env: Konfigurasikan file
.env
proyek Laravel Anda untuk menggunakan host dan port yang benar. Secara khusus, periksa variabelAPP_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 perintahnpm 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
atauyarn 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
“`