Setting PM2 Mode Development Auto-Reload & Restart Node.js

Setting PM2 Mode Development Auto-Reload & Restart Node.js

Update 06/12/25 · Read 5 min

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.


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.
READ :  Kenapa Memilih Node.js untuk Pengembangan Aplikasi?

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:

ManfaatPenjelasan
CPU lebih ringanPM2 tidak memonitor banyak file
Disk I/O rendahTidak scanning filesystem
Tidak ada restart tidak perluMenghindari fluktuasi server
Debugging lebih stabilTidak hilang state sesi/pid
Cocok untuk laptopHemat 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

FiturAuto ReloadManual Restart
Restart otomatisYaTidak
Kontrol developerRendahTinggi
Konsumsi resourceTinggiRendah
Cocok untukProyek kecilProyek besar
Risiko crash/tidak sengaja restartAdaMinimal

Kesimpulannya, manual restart lebih direkomendasikan dalam proses development.

READ :  WebSocket: Rahasia Komunikasi Real-Time di Internet Modern

Best Practice Mengembangkan Node.js dengan PM2 Tanpa Auto Refresh

  1. Jalankan tanpa watch pm2 start ecosystem.config.js
  2. Restart manual hanya saat butuh pm2 restart dev-app
  3. Struktur folder rapi
    • Pisahkan logs, upload, temp
  4. Gunakan version control
    • Commit sebelum restart — antisipasi bug rollback track
  5. Gunakan log viewer
    • Debug melalui pm2 logs
  6. 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.