One place for hosting & domains

      secara

      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

      Cara Menggunakan SFTP untuk Mentransfer Berkas secara Aman dengan Server Jauh


      Pengantar

      FTP, atau “File Transfer Protocol” adalah metode tidak terenkripsi yang populer untuk mentransfer berkas di antara dua sistem jauh.

      SFTP, yang merupakan singkatan SSH File Transfer Protocol, atau Secure File Transfer Protocol, adalah protokol terpisah yang dipaketkan dengan SSH yang bekerja dalam cara serupa tetapi melalui koneksi aman. Keuntungannya adalah kemampuan memanfaatkan koneksi aman untuk mentransfer berkas dan melintasi sistem berkas di sistem jauh dan lokal.

      Umumnya, SFTP lebih disukai daripada FTP karena fitur keamanan yang mendasari dan kemampuannya melakukan piggyback pada koneksi SSH. FTP adalah protokol tidak aman yang seharusnya hanya digunakan dalam kasus terbatas atau pada jaringan yang Anda percayai.

      Meskipun SFTP terintegrasi ke dalam banyak alat grafis, panduan ini akan memperagakan cara menggunakannya melalui antarmuka baris perintah interaktifnya.

      Cara Menghubungkan dengan SFTP

      Secara asali, SFTP menggunakan protokol SSH untuk mengautentikasi dan membuat koneksi aman. Karena ini, metode autentikasi yang sama tersedia di SSH.

      Meskipun kata sandi mudah digunakan dan disiapkan secara asali, kami menyarankan Anda membuat kunci SSH dan mentransfer kunci publik ke sistem yang perlu Anda akses. Ini jauh lebih aman dan dapat menghemat waktu dalam jangka panjang.

      Lihatlah panduan ini untuk menyiapkan kunci SSH guna mengakses server jika Anda belum melakukannya.

      Jika dapat menghubungkan ke mesin menggunakan SSH, berarti Anda telah menyelesaikan semua persyaratan menggunakan SFTP untuk mengelola berkas. Uji akses SSH dengan perintah berikut:

      • ssh sammy@your_server_ip_or_remote_hostname

      Jika berhasil, keluar kembali dengan mengetikkan:

      Sekarang kita dapat membuat sesi SFTP dengan mengeluarkan perintah berikut:

      • sftp sammy@your_server_ip_or_remote_hostname

      Anda akan menghubungkan sistem jauh dan prompt Anda akan berubah menjadi prompt SFTP.

      Jika Anda bekerja di porta SSH khusus (bukan porta asali 22), maka Anda dapat membuka sesi SFTP seperti berikut:

      • sftp -oPort=custom_port sammy@your_server_ip_or_remote_hostname

      Ini akan menghubungkan Anda ke sistem jauh melalui porta yang ditentukan.

      Mendapatkan Bantuan di SFTP

      Perintah paling berguna untuk dipelajari terlebih dahulu adalah perintah help. Perintah ini memberi Anda akses ke ringkasan bantuan SFTP. Anda dapat memanggilnya dengan mengetikkan salah satu dari ini di prompt:

      atau

      Ini akan menampilkan daftar perintah yang tersedia:

      Output

      Available commands: bye Quit sftp cd path Change remote directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown own path Change owner of file 'path' to 'own' df [-hi] [path] Display statistics for current directory or filesystem containing 'path' exit Quit sftp get [-Ppr] remote [local] Download file help Display this help text lcd path Change local directory to 'path' . . .

      Kita akan mendalami beberapa perintah yang Anda lihat di bagian berikut.

      Menavigasi dengan SFTP

      Kita dapat menavigasi hierarki berkas sistem jauh menggunakan sejumlah perintah yang berfungsi mirip dengan padanan shell-nya.

      Pertama-tama, mari kita ketahui di direktori mana kita saat ini pada sistem jauh. Sama seperti dalam sesi shell pada umumnya, kita dapat mengetikkan yang berikut untuk mendapatkan direktori saat ini:

      Output

      Remote working directory: /home/demouser

      Kita dapat melihat isi direktori saat ini di sistem jauh dengan perintah lainnya yang sudah familier:

      Output

      Summary.txt info.html temp.txt testDirectory

      Perhatikan bahwa perintah dalam antar muka SFTP bukanlah perintah shell biasa dan tidak kaya fitur, tetapi perintah-perintah itu mengimplementasikan beberapa bendera opsional yang lebih penting:

      Output

      drwxr-xr-x 5 demouser demouser 4096 Aug 13 15:11 . drwxr-xr-x 3 root root 4096 Aug 13 15:02 .. -rw------- 1 demouser demouser 5 Aug 13 15:04 .bash_history -rw-r--r-- 1 demouser demouser 220 Aug 13 15:02 .bash_logout -rw-r--r-- 1 demouser demouser 3486 Aug 13 15:02 .bashrc drwx------ 2 demouser demouser 4096 Aug 13 15:04 .cache -rw-r--r-- 1 demouser demouser 675 Aug 13 15:02 .profile . . .

      Untuk mendapatkan direktori lainnya, kita dapat mengeluarkan perintah ini:

      Sekarang kita dapat melintasi sistem berkas jauh, tetapi bagaimana jika kita perlu mengakses sistem berkas lokal kita? Kita dapat mengarahkan perintah ke sistem berkas lokal dengan menambahkan l di awal untuk lokal.

      Semua perintah yang dibahas sejauh ini memiliki padanan lokal. Kita dapat mencetak direktori kerja lokal:

      Output

      Local working directory: /Users/demouser

      Kita dapat membuat daftar isi direktori saat ini pada mesin lokal:

      Output

      Desktop local.txt test.html Documents analysis.rtf zebra.html

      Kita juga dapat mengubah direktori yang ingin kita tangani di sistem lokal:

      Mentransfer Berkas dengan SFTP

      Menyusuri sistem berkas jauh dan lokal terbatas kegunaannya bila tidak dapat mentransfer berkas di antara kedua sistem.

      Mentransfer Berkas Jauh ke Sistem Lokal

      Jika ingin mengunduh berkas dari hos jauh, kita dapat melakukannya dengan mengeluarkan perintah berikut:

      Output

      Fetching /home/demouser/remoteFile to remoteFile /home/demouser/remoteFile 100% 37KB 36.8KB/s 00:01

      Seperti yang Anda lihat, secara asali, perintah get mengunduh berkas jauh ke berkas dengan nama yang sama di sistem berkas lokal.

      Kita dapat menyalin berkas jauh ke nama yang berbeda dengan menentukan namanya kemudian:

      Perintah get juga menggunakan beberapa bendera opsi. Misalnya, kita dapat menyalin direktori dan semua isinya dengan menentukan opsi rekursif:

      Kita dapat memberi tahu SFTP untuk mempertahankan izin dan waktu akses yang sesuai menggunakan bendera -P atau -p:

      Mentransfer Berkas Lokal ke Sistem Jauh

      Mentransfer berkas ke sistem jauh mudah dilakukan menggunakan perintah “put” dengan semestinya:

      Output

      Uploading localFile to /home/demouser/localFile localFile 100% 7607 7.4KB/s 00:00

      Bendera yang sama yang dapat digunakan pada get juga dapat digunakan pada put. Jadi, untuk menyalin seluruh direktori lokal, Anda dapat mengeluarkan:

      Catatan: Saat ini ada kutu di versi OpenSSH yang disertakan pada rilis Ubuntu saat ini (setidaknya 14.04 hingga 15.10) yang menghalangi pengoperasian perintah di atas dengan benar. Setelah mengeluarkan perintah di atas untuk mentransfer konten ke server menggunakan versi OpenSSH yang mengandung kutu, pesan kesalahan berikut akan diberikan: Couldn't canonicalise: No such file or directory.

      Untuk mengatasi masalah ini, buat direktori tujuan di sistem jauh terlebih dahulu dengan mengetikkan mkdir localDirectory. Setelah itu, perintah di atas akan dijalankan tanpa kesalahan.

      Satu alat yang telah dikenal yang berguna saat mengunduh dan mengunggah berkas adalah perintah df, yang fungsinya mirip dengan versinya di baris perintah. Dengan alat ini, Anda dapat memeriksa apakah cukup ruang untuk menyelesaikan transfer yang Anda inginkan:

      Output

      Size Used Avail (root) %Capacity 19.9GB 1016MB 17.9GB 18.9GB 4%

      Perhatikan, tidak ada variasi lokal perintah ini, tetapi kita dapat mengatasinya dengan mengeluarkan perintah !.

      Perintah ! menempatkan kita ke dalam shell lokal sehingga kita dapat menjalankan perintah apa pun yang tersedia di sistem lokal kita. Kita dapat memeriksa penggunaan diska dengan mengetikkan:

      kemudian

      Output

      Filesystem Size Used Avail Capacity Mounted on /dev/disk0s2 595Gi 52Gi 544Gi 9% / devfs 181Ki 181Ki 0Bi 100% /dev map -hosts 0Bi 0Bi 0Bi 100% /net map auto_home 0Bi 0Bi 0Bi 100% /home

      Perintah lokal lainnya akan berjalan sesuai harapan. Untuk kembali ke sesi SFTP Anda, ketikkan:

      Sekarang Anda akan melihat prompt SFTP dihasilkan.

      Manipulasi Berkas secara Sederhana dengan SFTP

      SFTP memungkinkan Anda melakukan pemeliharaan berkas dasar yang berguna saat menangani hierarki berkas.

      Misalnya, Anda dapat mengubah pemilik berkas di sistem jauh dengan:

      Perhatikan, tidak seperti perintah chmod sistem, perintah SFTP tidak menerima nama pengguna, melainkan menggunakan UID. Sayangnya, tidak ada cara mudah untuk mengetahui UID yang sesuai dari dalam antarmuka SFTP.

      Solusi terkait dapat dilakukan dengan:

      • get /etc/passwd
      • !less passwd

      Output

      root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh . . .

      Perhatikan, sebagai ganti memberikan perintah ! dengan sendirinya, kita menggunakannya sebagai awalan untuk perintah shell lokal. Cara ini berhasil untuk menjalankan perintah yang tersedia di mesin lokal kita dan dapat digunakan bersama perintah df lokal sebelumnya.

      UID akan berada di kolom ketiga berkas, seperti yang digambarkan melalui karakter titik dua.

      Demikian pula, kita dapat mengubah pemilik grup berkas dengan:

      Sekali lagi, tidak ada cara mudah untuk mendapatkan daftar grup sistem jauh. Kita dapat mengatasinya dengan perintah berikut:

      • get /etc/group
      • !less group

      Output

      root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: . . .

      Kolom ketiga berisi ID grup yang dikaitkan dengan nama di kolom pertama. Inilah yang kita cari.

      Untungnya, perintah chmod berfungsi seperti yang diharapkan di sistem berkas jauh:

      Output

      Changing mode on /home/demouser/publicFile

      Tidak ada perintah untuk memanipulasi izin berkas lokal, tetapi Anda dapat mengatur umask lokal, sehingga berkas yang disalin ke sistem lokal akan memiliki izin yang sesuai.

      Hal itu dapat dilakukan dengan perintah lumask:

      Output

      Local umask: 022

      Sekarang semua berkas reguler yang diunduh (selama bendera -p tidak digunakan) akan memiliki 644 izin.

      SFTP memungkinkan Anda membuat direktori di sistem lokal maupun jauh masing-masing dengan lmkdir dan mkdir. Ini akan berhasil seperti yang diharapkan.

      Perintah berkas selebihnya hanya menargetkan sistem berkas jauh:

      Perintah ini menirukan perilaku dasar dari versi shell. Jika Anda perlu melakukan tindakan ini di sistem berkas lokal, ingatlah bahwa Anda dapat masuk ke shell dengan mengeluarkan perintah ini:

      Atau menjalankan perintah tunggal di sistem lokal dengan mengawali perintah itu menggunakan ! seperti ini:

      Bila Anda selesai dengan sesi SFTP, gunakan exit atau bye untuk menutup koneksi.

      Kesimpulan

      Meskipun SFTP adalah alat sederhana, tetapi sangat berguna untuk administrasi server dan mentransfer berkas antar server.

      Misalnya, Anda dapat menggunakan SFTP untuk memungkinkan pengguna tertentu mentransfer berkas tanpa akses SSH. Untuk informasi lebih lanjut tentang proses ini, lihat tutorial kami tentang Cara Mengaktifkan SFTP Tanpa Akses Shell.

      Jika Anda biasa menggunakan FTP atau SCP untuk melakukan transfer, SFTP adalah cara yang tepat untuk memanfaatkan kekuatan keduanya. Walaupun tidak sesuai untuk setiap situasi, ini adalah alat fleksibel yang harus Anda gunakan dalam repertoar.



      Source link