Pelajari cara membuat program dengan antarmuka baris perintah standar menggunakan perpustakaan yang bermanfaat ini.

Aplikasi CLI (Command Line Interface) adalah aplikasi berbasis teks sederhana yang berjalan di terminal untuk menyelesaikan tugas tertentu. Aplikasi CLI memainkan peran penting dalam alur kerja hampir setiap pengembang dan profesional TI.

Mereka sebagian besar adalah alat utilitas yang berinteraksi dengan sistem operasi atau aplikasi diinstal secara lokal atau tersedia melalui internet untuk melakukan tugas sesuai dengan masukan pengguna dan arahan.

Memahami Aplikasi CLI

Antarmuka baris perintah memungkinkan Anda berinteraksi dengan program dengan mengetikkan baris teks. Banyak program CLI berjalan berbeda tergantung pada perintah yang Anda gunakan untuk memulainya.

Misalnya, program ls menampilkan informasi file dan isi direktori. Anda mungkin menjalankannya seperti ini:

ls -l /home

Perintah ini meliputi:

  • Nama programnya: aku.
  • Sebuah opsi (atau bendera). Pada kasus ini, -l adalah opsi yang merupakan kependekan dari "panjang" dan menghasilkan informasi yang lebih detail.
  • instagram viewer
  • Sebuah argumen, /home. Di sini, argumen menentukan jalur ke direktori untuk menampilkan informasi.

Meskipun setiap program dapat menentukan antarmuka baris perintahnya sendiri, elemen tertentu bersifat umum dan digunakan secara luas. Anda harus mengikuti standar ini sehingga seseorang yang terbiasa dengan antarmuka baris perintah dapat menggunakan program Anda dengan mudah.

Apa itu Commander.js?

Commander.js adalah sebuah paket yang memungkinkan Anda membuat aplikasi CLI di Node.js. Ini memiliki perpustakaan kaya fitur yang memungkinkan Anda membangun aplikasi CLI standar, melakukan banyak pekerjaan berat. Anda hanya perlu menentukan perintah, opsi, dan fungsionalitas untuk aplikasi CLI Anda.

Menggabungkannya dengan paket lain seperti Chalk.js untuk penataan gaya, Anda dapat dengan cepat membuat aplikasi CLI yang berfungsi penuh di Node.js.

Membangun Aplikasi CLI di Node.js Menggunakan Commander.js

Pertimbangkan contoh aplikasi CLI, urban-cli, yang mencari arti kata dan singkatan dari media sosial Kamus Perkotaan. Anda akan mempelajari cara membuat CLI dan memublikasikannya ke npm paket registri sehingga orang lain dapat menginstalnya.

Buat folder baru dan inisialisasi proyek Node.js baru dengan perintah berikut:

mkdir urbanary-cli
cd urbanary-cli
npm init -y

CLI ini akan digunakan Axios untuk mengirim permintaan HTTP ke API Kamus Perkotaan. Anda dapat gunakan API cepat untuk memeriksa titik akhir dan melihat kredensial.

CLI Sederhana Dengan Subperintah dan Bantuan

Untuk mulai membangun CLI Anda, instal Commander dan Axios dengan perintah berikut:

npm install commander axios

Buat folder baru, tempat sampah, di direktori proyek Anda dan file kosong baru, indeks.js:

mkdir bin
cd bin
touch index.js

Itu tempat sampah Folder (kependekan dari "biner") penting karena menyimpan file titik masuk yang dipanggil Node saat Anda menjalankan CLI. Itu indeks.js file adalah file titik masuk ini. Sekarang, edit file index.js dan mulai buat CLI Anda dengan API Commander.js.

Pertama, impor program keberatan dari Komandan:

const { program } = require('commander');

Anda akan menggunakan program objek untuk menentukan antarmuka program Anda, termasuk sub-perintah, opsi, dan argumen. Objek tersebut memiliki metode yang sesuai untuk masing-masing metode tersebut; misalnya, untuk mendefinisikan sub-perintah, gunakan memerintah metode.

Definisikan a menemukan subperintah CLI untuk mencari kata-kata dari Urban Dictionary dan menambahkan deskripsinya menggunakan kode di bawah ini:

// index.js
program
.command('find ')
.description('find meaning of a word or abbreviation or slang')

Ini mendaftarkan a menemukan perintah, yang mengharapkan kata setelahnya, dan deskripsinya. Penggunaan tanda kurung siku menandakan bahwa kata tersebut merupakan argumen yang diperlukan; gunakan tanda kurung siku sebagai gantinya ([]) untuk menjadikannya opsional.

Anda harus menambahkan deskripsi karena Commander.js menggunakannya untuk menghasilkan teks bantuan. Saat Anda menjalankan aplikasi dengan membantu perintah, Anda akan mendapatkan panduan penggunaan standar.

Untuk mengujinya, tambahkan yang berikut ini:

program.parse()

Kemudian jalankan program dan sebarkan membantu perintah untuk mendapatkan output di bawah ini:

Ini adalah bagaimana aplikasi CLI standar menampilkan bantuannya kepada pengguna dan, dengan Commander, Anda tidak perlu khawatir untuk membuatnya sendiri. Itu -H Dan --membantu opsi berguna untuk memeriksa panduan penggunaan suatu perintah.

Menentukan Pilihan dan Mempersiapkan Program Akhir

Anda juga menentukan opsi dengan merangkainya pilihan metode ke definisi perintah.

Berikut cara menentukan opsi untuk menyertakan contoh dalam definisi kata:

program.option('-e, --example', "Display examples")

Dan inilah cara menentukan opsi yang menentukan jumlah definisi yang akan dikembalikan:

program.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)

Itu pilihan Metode menerima dua parameter string, satu untuk nama opsi (bentuk pendek dan panjang), dan yang lainnya untuk deskripsinya. Ekstra [jumlah] argumen di menghitung option adalah nilai jumlah definisi yang akan ditampilkan.

Sekarang, metode terakhir untuk menambahkan adalah tindakan metode. Anda akan menerapkan menemukan fungsionalitas perintah dalam metode ini. Tambahkan ke rantai sehingga kode Anda sekarang terlihat seperti ini:

program
.command('find ')
.description('find meaning of a word or abbreviation or slang')
.option('-e, --example', "Display examples")
.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
.action(async (word, options) => {});

Dengan pengaturan ini, inilah perintah untuk mendapatkan tiga definisi tertawa terbahak-bahak dengan contoh akan terlihat seperti:

urbanary-cli find lol -e -c 3

Atau, gunakan bentuk panjang dari setiap opsi:

urbanary-cli find lol --example --count 3

Periksa Halaman npm Komandan untuk mempelajari lebih lanjut tentangnya dan cara menyesuaikan fungsinya untuk berbagai kasus penggunaan Anda.

Menerapkan Fungsi Program

Pertama, impor Axios ke file Anda indeks.js mengajukan sebagai berikut:

const axios = require('axios');

Kemudian, di badan fungsi tindakanparameter, Anda dapat menerapkan logika untuk membuat permintaan ke Urban Dictionary dan menampilkan hasil sesuai pilihan Anda.

Mulailah dengan mendefinisikan permintaan Anda:

let requestOptions = {
method: 'GET',
URL: "https://mashape-community-urban-dictionary.p.rapidapi.com/define",
params: { term: word },
headers: {
'X-RapidAPI-Key': YOUR_RAPID_API_KEY,
'X-RapidAPI-Host': 'mashape-community-urban-dictionary.p.rapidapi.com'
}
}

Kemudian buat request ke API menggunakan Axios dengan kode berikut:

try {
let resp = await axios.request(requestOptions);
console.log(`Definitions for ${word} fetched`);
wordData = resp.data.list;
} catch (err) {
console.error(err.message)
}

Satu-satunya properti yang Anda perlukan dari data respons adalah daftar properti yang berisi definisi dan contoh.

Masih di mencoba blok, tambahkan logika ini untuk menangani opsi dan menampilkan hasilnya sebagai berikut:

if (options.example && options.count) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);

definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
console.log(`Example:\n${elem.example}\n`);
});
} elseif (options.count && !options.example) {
let cnt = 1;
let definitions = wordData.slice(0, options.count);

definitions.forEach((elem) => {
console.log(`Definition ${cnt++}: ${elem.definition}`);
});
} elseif (options.example) {
console.log(`Definition: ${wordData[0].definition}`);
console.log(`Example:\n${wordData[0].example}`);
} else {
console.log(`Definition: ${wordData[0].definition}`);
}

Kode ini mengevaluasi argumen perintah menggunakan pernyataan if-else untuk menentukan cara menampilkan output. Jika contoh Dan menghitung opsi dilewatkan, ia mengulanginya data kata dan mencetak sejumlah definisi dan contoh yang ditentukan bersamanya.

Jika Anda lulus saja menghitung, ini menampilkan sejumlah definisi tanpa contoh. Jika Anda lulus saja contoh, ini menampilkan satu definisi dengan contoh kalimat. Itu kalau tidak pernyataan adalah perilaku default untuk mencetak definisi saja jika Anda tidak memberikan opsi apa pun.

Aplikasi sudah siap, langkah selanjutnya adalah membuatnya dapat dieksekusi. Mulailah dengan menambahkan garis shebang ke awal file bin/index.js sehingga Anda dapat menjalankannya sebagai skrip mandiri:

#!/usr/bin/env node

Selanjutnya, buka milik Anda paket.json file, edit nilai utama properti, dan tambahkan a tempat sampah properti setelahnya seperti ini:

"main": "./bin/index.js",
"bin": {
"urbanary-cli": "./bin/index.js"
},

Kunci urban-cli, di bawah tempat sampah adalah perintah yang akan Anda masukkan di terminal untuk menjalankan aplikasi Anda. Jadi, pastikan untuk menggunakan nama yang sesuai saat membangun aplikasi baris perintah Anda.

Berlari npm instal -g untuk menginstal aplikasi secara global, dan Anda akan dapat menjalankan aplikasi sebagai perintah dari terminal Anda.

Gambar di bawah menunjukkan proses instalasi dan perintah pengujian untuk menemukan artinya lmk:

Anda juga dapat mempublikasikannya ke registri paket npm dengan menjalankan npm terbitkan di terminal dalam direktori proyek. Ini membuatnya dapat diinstal oleh siapa saja dan dari mana saja instalasi npm.

Lebih mudah untuk membangun dan mempublikasikan aplikasi Anda dengan Node.js, dibandingkan saat Anda sendiri membangun CLI dengan teknologi seperti Rust.

Bangun Aplikasi CLI Fungsional Dengan Node.js

Baik Anda sedang mengerjakan paket npm dan memerlukan utilitas CLI untuk menyertainya, atau Anda hanya ingin membuat alat untuk meningkatkan alur kerja Anda sebagai pengembang. Anda memiliki semua yang dibutuhkan untuk mewujudkan ide Anda dengan paket Node.js Commander.

Anda juga dapat melangkah lebih jauh dengan menggunakan perpustakaan lain untuk menciptakan pengalaman CLI yang lebih baik untuk aplikasi Anda, Node.js cukup kuat untuk melayani tujuan Anda tanpa banyak kerumitan.