One place for hosting & domains

      Memulai

      Cara Memulai Ulang Aplikasi Node.js secara Otomatis dengan nodemon


      Pengantar

      Dalam Node.js, Anda perlu memulai ulang proses untuk menerapkan perubahan. Ini menambah langkah ekstra ke alur kerja Anda demi menerapkan perubahan. Anda dapat menghilangkan langkah ekstra ini dengan nodemon untuk memulai ulang prosesnya secara otomatis.

      nodemon adalah antarmuka baris-perintah (CLI) yang dikembangkan oleh @rem yang mengemas aplikasi Node Anda, memantau sistem berkas, dan secara otomatis memulai ulang proses.

      Dalam artikel ini, Anda akan mempelajari tentang menginstal, menyiapkan, dan mengonfigurasi nodemon.

      Prasyarat

      Jika Anda ingin mengikuti artikel ini, Anda membutuhkan:

      Langkah 1 — Menginstal nodemon

      Pertama, Anda perlu menginstal nodemon di mesin Anda. Instal utilitas secara global maupun secara lokal pada proyek Anda menggunakan npm atau Yarn:

      Instalasi Global

      Anda dapat menginstal nodemon secara global dengan npm:

      Atau dengan Yarn:

      Instalasi Lokal

      Anda juga dapat menginstal nodemon secara lokal dengan npm. Ketika melakukan instalasi lokal, kita dapat menginstal nodemon sebagai dependensi dev dengan --save-dev (atau --dev):

      • npm install nodemon --save-dev

      Atau dengan Yarn:

      Satu hal yang harus disadari dengan instalasi lokal adalah Anda tidak akan dapat menggunakan perintah nodemon secara langsung dari baris perintah:

      Output

      • command not found: nodemon

      Namun, Anda dapat menggunakannya sebagai bagian dari skrip npm atau dengan npx.

      Ini adalah akhir dari proses instalasi nodemon. Selanjutnya, kita akan menggunakan nodemon dengan proyek kita.

      Langkah 2 — Menyiapkan Proyek Express Contoh dengan nodemon

      Kita dapat menggunakan nodemon untuk memulai skrip Node. Misalnya, jika kita memiliki penyiapan server Express di dalam berkas server.js, kita dapat memulainya dan memantau perubahan seperti ini:

      Anda dapat memasukkan argumen dengan cara yang sama seperti Anda menjalankan skrip dengan Node:

      Setiap kali Anda membuat perubahan terhadap berkas dengan salah satu dari ekstensi asali yang dipantau (.js, .mjs, .json, .coffee, atau .litcoffee) di dalam direktori atau subdirektori saat ini, proses akan memulai ulang.

      Mari kita asumsikan kita menulis suatu berkas contoh server.js yang mengeluarkan pesan: Dolphin app listening on port ${port}!.

      Kita dapat menjalankan contoh dengan nodemon:

      Kita akan melihat keluaran terminal berikut:

      Output

      [nodemon] 1.17.3 [nodemon] to restart at any time, enter `rs` [nodemon] watching: *.* [nodemon] starting `node server.js` Dolphin app listening on port 3000!

      Sementara nodemon masih berjalan, mari kita buat perubahan terhadap berkas server.js untuk mengeluarkan pesan: Shark app listening on port ${port}!.

      Kita akan melihat keluaran terminal tambahan berikut:

      Output

      [nodemon] restarting due to changes... [nodemon] starting `node server.js` Shark app listening on port 3000!

      Keluaran terminal dari aplikasi Node.js akan menampilkan seperti yang diharapkan. Anda dapat memulai ulang prosesnya kapan pun dengan mengetik rs dan menekan ENTER.

      Sebagai alternatif, nodemon juga akan mencari berkas main yang ditentukan dalam berkas package.json dari proyek Anda:

      package.json

      {
        // ...
        "main": "server.js",
        // ...
      }
      

      Atau, skrip start:

      package.json

      {
        // ...
        "scripts": {
          "start": "node server.js"
        },
        // ...
      }
      

      Setelah Anda membuat perubahan pada package.json, Anda kemudian dapat memanggil nodemon untuk memulai aplikasi contoh di mode pemantauan tanpa harus memasukkan server.js.

      Langkah 3 — Menggunakan Opsi

      Anda dapat memodifikasi pengaturan konfigurasi yang tersedia untuk nodemon.

      Mari kita bahas beberapa opsi utama:

      • --exec: Pakai switch --exec guna menentukan biner untuk mengeksekusi berkas. Misalnya, saat dikombinasikan dengan biner ts-node, --exec dapat menjadi berguna untuk memantau perubahan dan menjalankan berkas TypeScript.
      • --ext: Menentukan ekstensi berkas berbeda yang harus dipantau. Untuk switch ini, berikan daftar ekstensi berkas yang harus dipisahkan oleh koma (misalnya, --ext js,ts).
      • --delay: Secara asali, nodemon menunggu selama satu detik untuk memulai ulang proses saat berkas berubah, tetapi dengan switch --delay, Anda dapat menentukan waktu tunggu yang berbeda. Misalnya, nodemon --delay 3.2 untuk penundaan selama 3,2 detik.
      • --watch: Gunakan switch --watch untuk menentukan beberapa direktori atau berkas yang harus dipantau. Tambahkan satu switch --watch untuk setiap direktori yang ingin Anda pantau. Secara asali, direktori dan subdirektori saat ini telah dipantau, jadi dengan --watch Anda dapat mempersempitnya hanya ke subdirektori atau berkas tertentu.
      • --ignore: Gunakan switch --ignore untuk mengabaikan berkas, pola berkas, atau direktori tertentu.
      • --verbose: Keluaran verbose yang lebih banyak dengan informasi tentang berkas-berkas yang berubah sehingga memicu pemulaian ulang.

      Anda dapat melihat semua opsi yang tersedia dengan perintah berikut:

      Dengan menggunakan opsi ini, mari kita ciptakan perintah untuk memenuhi skenario berikut:

      • memantau direktori server
      • menentukan berkas dengan ekstensi .ts
      • mengabaikan berkas dengan akhiran .test.ts
      • mengeksekusi berkas (server/server.ts) dengan ts-node
      • menunggu selama tiga detik untuk memulai ulang setelah berkas berubah
      • nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts

      Perintah ini mengombinasikan opsi --watch, --ext, --exec, --ignore, dan --delay untuk memenuhi kondisi skenario kita.

      Langkah 4 — Menggunakan Konfigurasi

      Dalam contoh sebelumnya, menambahkan switch konfigurasi saat menjalankan nodemon bisa menjadi cukup membosankan. Solusi yang lebih baik untuk proyek yang memerlukan konfigurasi spesifik adalah dengan menentukan konfigurasi ini dalam berkas nodemon.json.

      Misalnya, ini adalah konfigurasi yang sama seperti contoh baris perintah sebelumnya, tetapi ditempatkan di dalam berkas nodemon.json:

      nodemon.json

      {
        "watch": ["server"],
        "ext": "ts",
        "ignore": ["*.test.ts"],
        "delay": "3",
        "execMap": {
          "ts": "ts-node"
        }
      }
      

      Perhatikan penggunaan execMap alih-alih switch --exec. execMap memungkinkan Anda untuk menentukan biner yang harus digunakan untuk ekstensi berkas tertentu.

      Sebagai alternatif, jika Anda lebih memilih untuk tidak menambahkan berkas konfigurasi nodemon.json ke proyek, Anda dapat menambahkan konfigurasi ini ke berkas package.json di bawah kunci nodemonConfig:

      package.json

      {
        "name": "test-nodemon",
        "version": "1.0.0",
        "description": "",
        "nodemonConfig": {
          "watch": [
            "server"
          ],
          "ext": "ts",
          "ignore": [
            "*.test.ts"
          ],
          "delay": "3",
          "execMap": {
            "ts": "ts-node"
          }
        },
        // ...
      

      Setelah Anda membuat perubahan pada nodemon.json atau package.json, Anda kemudian dapat memulai nodemon dengan skrip yang diinginkan:

      nodemon akan mengambil konfigurasinya dan menggunakannya. Dengan cara ini, konfigurasi Anda dapat disimpan, dibagikan, dan diulang untuk menghindari salin-tempel atau kesalahan tik di baris perintah.

      Kesimpulan

      Dalam artikel ini, Anda telah mendalami cara menggunakan nodemon dengan aplikasi Node.js. Alat ini membantu mengotomatiskan proses memberhentikan dan memulai server Node untuk melihat perubahan.

      Untuk informasi lebih lanjut tentang fitur dan pemecahan masalah yang tersedia, lihat dokumentasi resmi.

      Jika Anda ingin mempelajari lebih lanjut tentang Node.js, lihat laman topik Node.js. kami untuk proyek latihan dan pemrograman.





      Source link