PM2 merupakan salah satu process manager paling populer untuk aplikasi Node.js. Keunggulan PM2 antara lain kemampuan untuk melakukan monitoring, log management, load balancing, dan otomatis restart saat terjadi crash. Namun, tidak semua kondisi membutuhkan fitur auto-reload.
Pada mode development, sebagian developer lebih nyaman untuk mematikan fitur auto-watch agar server tidak restart setiap file berubah, terutama pada proyek besar yang memiliki banyak file sehingga proses restart justru menghambat pekerjaan.
Artikel ini akan membahas secara lengkap bagaimana cara menggunakan PM2 di mode development tanpa auto reload, serta bagaimana cara melakukan restart manual ketika dibutuhkan. Kita juga akan membahas strategi kerja, tips, dan best practice agar workflow development menjadi lebih nyaman.
Contents
- 1 Mengapa Tidak Menggunakan Auto-Reload Saat Development?
- 2 Install PM2
- 3 Menjalankan Aplikasi Node.js Tanpa Auto-Reload (Tanpa Watch)
- 4 Cara Restart Manual Aplikasi di PM2
- 5 Menggunakan File Konfigurasi ecosystem.config.js
- 6 Kenapa Jangan Sekedar Menonaktifkan Watch Melalui CLI?
- 7 Apa yang Terjadi Jika Watch Disetel, Tapi Folder Diabaikan?
- 8 Logging Tanpa Mengganggu Performa
- 9 Kapan Sebaiknya Restart Manual Dilakukan?
- 10 Tips Agar Restart Manual Lebih Nyaman
- 11 Performa Lebih Tinggi Tanpa Watch
- 12 Perbandingan Mode Auto-Reload vs Manual Restart
- 13 Best Practice Mengembangkan Node.js dengan PM2 Tanpa Auto Refresh
- 14 Kesimpulan
Mengapa Tidak Menggunakan Auto-Reload Saat Development?
Secara default, PM2 memungkinkan fitur --watch yang memonitor perubahan file. Untuk development kecil, seperti microservice atau API sederhana, auto-watch dapat membantu karena server akan otomatis restart setiap kali kode berubah.
Namun, dalam banyak situasi, auto-reload tidak ideal:
1. Proyek besar
Jika banyak file atau directory dimonitor, server bisa restart berulang kali saat ada perubahan kecil di banyak tempat — termasuk file logs, folder uploads, atau file temp.
2. Kinerja laptop/PC turun
Mode watch memakan resource CPU dan disk I/O karena PM2 harus memonitor ratusan atau ribuan file.
3. Pengembangan yang tidak memerlukan restart cepat
Misal Anda sedang membuat fitur baru di bagian frontend terpisah, atau sedang mengerjakan dokumentasi, Anda mungkin tidak ingin node server restart terus.
4. Debugging lebih efektif dengan restart manual
Ketika debugging kompleks, restart manual lebih terkontrol.
Install PM2
Sebelum masuk setting, pastikan PM2 sudah terinstall:
npm install -g pm2
Cek versi:
pm2 -v
Jika sudah, kita lanjut ke bagian konfigurasi.
Menjalankan Aplikasi Node.js Tanpa Auto-Reload (Tanpa Watch)
Untuk memastikan server berjalan tanpa restart otomatis, jalankan aplikasi seperti berikut:
pm2 start app.js
Atau jika ingin menamai proses:
pm2 start app.js --name dev-app
Di sini:
- Tidak ada flag
--watch. - Server tidak memantau perubahan file.
Melihat status aplikasi
pm2 ls
Cara Restart Manual Aplikasi di PM2
Restart manual dilakukan jika Anda mengubah kode dan ingin menerapkannya secara manual:
pm2 restart dev-app
Atau berdasarkan ID (misal ID = 0):
pm2 restart 0
Restart manual memberikan kontrol penuh kapan server melakukan reload.
Menggunakan File Konfigurasi ecosystem.config.js
Konfigurasi yang baik biasanya disimpan dalam file:
Buat file:
ecosystem.config.js
Isi konfigurasi tanpa watch:
module.exports = {
apps: [
{
name: "dev-app",
script: "app.js",
watch: false
}
]
}
Kemudian jalankan:
pm2 start ecosystem.config.js
Setelah file diedit (misal menambah environment variable), restart manual:
pm2 restart ecosystem.config.js
Penggunaan file ecosystem lebih terstruktur untuk proyek besar.
Kenapa Jangan Sekedar Menonaktifkan Watch Melalui CLI?
Secara CLI memang bisa:
pm2 start app.js --no-watch
Namun:
- Setting ini akan hilang ketika Anda melakukan
restart all. - Tidak terdeteksi konsisten dalam environment yang kompleks.
Karena itu lebih baik menggunakan ecosystem.config.js.
Apa yang Terjadi Jika Watch Disetel, Tapi Folder Diabaikan?
Kadang developer berpikir untuk mematikan watch dengan ignore folder:
ignore_watch: [
"node_modules",
"logs",
"log",
"tmp",
"temp",
"uploads",
"public",
"coverage",
".git",
".cache",
".vscode"
]
Namun:
- PM2 masih memonitor banyak file lainnya.
- Masih ada proses scanning yang memakan resource.
Jika niatnya benar-benar tanpa reload, maka watch: false adalah solusi paling bersih.
Logging Tanpa Mengganggu Performa
Pada mode development tanpa watch, log tetap dapat dilihat:
pm2 logs dev-app
Untuk melihat log error saja:
pm2 logs dev-app --err
Untuk melihat log output:
pm2 logs dev-app --out
Tidak ada restart otomatis saat log bertambah — ini baik karena logging sering menyebabkan auto reload tanpa sengaja.
Kapan Sebaiknya Restart Manual Dilakukan?
Restart manual sangat cocok dalam situasi berikut:
1. Setelah modifikasi kode signifikan
Misalnya mengubah routing, menambah middleware, merombak file config.
2. Setelah update environment variable
Jika menggunakan dotenv, perubahan .env butuh restart manual.
3. Ketika terjadi crash
Kadang aplikasi crash karena error fatal — restart akan menaikkannya kembali.
4. Saat deploy development branch ke environment test
Workflow menjadi lebih terkontrol.
Tips Agar Restart Manual Lebih Nyaman
Gunakan alias
Buat alias di terminal BIOS/Ubuntu/macOS:
alias pr="pm2 restart dev-app"
Sehingga restart cukup:
pr
Gunakan git hooks (opsional)
Jika commit code, server bisa restart otomatis.
- Buat file
.git/hooks/post-commit
Isi:
pm2 restart dev-app
Ini membantu jika Anda bekerja tim.
Performa Lebih Tinggi Tanpa Watch
Menonaktifkan watch memberikan manfaat:
| Manfaat | Penjelasan |
|---|---|
| CPU lebih ringan | PM2 tidak memonitor banyak file |
| Disk I/O rendah | Tidak scanning filesystem |
| Tidak ada restart tidak perlu | Menghindari fluktuasi server |
| Debugging lebih stabil | Tidak hilang state sesi/pid |
| Cocok untuk laptop | Hemat baterai dan panas |
Pada proyek Node besar (lebih dari 300 file), menonaktifkan watch bisa menghemat hingga 50–70% overhead PM2.
Perbandingan Mode Auto-Reload vs Manual Restart
| Fitur | Auto Reload | Manual Restart |
|---|---|---|
| Restart otomatis | Ya | Tidak |
| Kontrol developer | Rendah | Tinggi |
| Konsumsi resource | Tinggi | Rendah |
| Cocok untuk | Proyek kecil | Proyek besar |
| Risiko crash/tidak sengaja restart | Ada | Minimal |
Kesimpulannya, manual restart lebih direkomendasikan dalam proses development.
Best Practice Mengembangkan Node.js dengan PM2 Tanpa Auto Refresh
- Jalankan tanpa watch
pm2 start ecosystem.config.js - Restart manual hanya saat butuh
pm2 restart dev-app - Struktur folder rapi
- Pisahkan
logs,upload,temp
- Pisahkan
- Gunakan version control
- Commit sebelum restart — antisipasi bug rollback track
- Gunakan log viewer
- Debug melalui
pm2 logs
- Debug melalui
- Gunakan alias untuk efisiensi
- Skrip terminal agar restart cepat
Kesimpulan
Penggunaan PM2 pada mode development bisa dibuat lebih efisien dengan mematikan fitur auto-reload dan menggantinya dengan restart manual ketika dibutuhkan. Konfigurasi seperti ini mengurangi konsumsi resource sistem, mencegah restart tak perlu, dan meningkatkan produktivitas developer terutama pada proyek yang besar.
Dengan menggunakan konfigurasi ecosystem.config.js dan menjalankan aplikasi Node.js tanpa opsi --watch, kita mendapatkan setup yang stabil, terkontrol, dan fleksibel untuk pengembangan jangka panjang. Restart manual hanya dilakukan saat penting — memberikan kendali penuh atas lifecycle server.
Cara ini juga lebih clean dibanding sekadar meng-ignore folder karena tidak ada overhead filesystem scanning. Ditambah penggunaan aliased command, logging PM2 dan workflow git, development menjadi lebih cepat, rapi, dan sistematis.
Pada akhirnya, PM2 bukan hanya untuk production — dengan konfigurasi yang tepat, PM2 juga menjadi tools development yang powerful dan nyaman digunakan.