Naučite se zgraditi program s standardnim vmesnikom ukazne vrstice z uporabo te koristne knjižnice.

Aplikacije CLI (vmesnik ukazne vrstice) so poenostavljene besedilne aplikacije, ki se izvajajo v terminalu za dokončanje določenih nalog. Aplikacije CLI igrajo ključno vlogo v poteku dela skoraj vsakega razvijalca in IT strokovnjaka.

Večinoma so pomožna orodja, ki komunicirajo z operacijskim sistemom ali aplikacijami, ki so bodisi nameščen lokalno ali na voljo prek interneta za izvajanje naloge glede na uporabnikov vnos in direktive.

Razumevanje aplikacij CLI

Vmesnik ukazne vrstice vam omogoča interakcijo s programom z vnašanjem vrstic besedila. Številni programi CLI se izvajajo drugače, odvisno od ukaza, ki ga uporabite za zagon.

na primer program ls prikaže informacije o datoteki in vsebino imenikov. Lahko ga zaženete takole:

ls -l /home

Ta ukaz vključuje:

  • Ime programa: ls.
  • Možnost (ali zastavica). V tem primeru, -l je možnost, ki je okrajšava za "dolgo" in daje podrobnejše informacije.
  • Prepir, /home. Tu argument določa pot do imenika, za katerega želite prikazati informacije.
instagram viewer

Medtem ko lahko vsak program definira svoj vmesnik ukazne vrstice, so nekateri elementi pogosti in v široki uporabi. Sledite tem standardom, tako da bo nekdo, ki je seznanjen z vmesnikom ukazne vrstice, zlahka uporabljal vaše programe.

Kaj je Commander.js?

Commander.js je paket, ki vam omogoča izdelavo aplikacij CLI v Node.js. Ima bogato knjižnico funkcij, ki vam omogočajo izdelavo standardne aplikacije CLI, ki opravi veliko težkega dela. Določiti morate le ukaze, možnosti in funkcionalnost za vašo aplikacijo CLI.

Če ga kombinirate z drugimi paketi, kot je Chalk.js za oblikovanje, lahko hitro ustvarite popolnoma delujočo aplikacijo CLI v Node.js.

Gradnja aplikacije CLI v Node.js z uporabo Commander.js

Razmislite o primeru aplikacije CLI, urbanary-cli, ki poišče pomen besed in okrajšav družbenih medijev iz Urbani slovar. Naučili se boste, kako ustvariti CLI in ga objaviti v npm register paketov, da ga lahko drugi namestijo.

Ustvarite novo mapo in inicializirajte nov projekt Node.js z naslednjimi ukazi:

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

Ta CLI bo uporabil Axios za pošiljanje zahtev HTTP v API Urban Dictionary. Lahko uporabiš Hitri API za preverjanje končnih točk in ogled poverilnic.

Preprost CLI s podukazom in pomočjo

Če želite začeti graditi svoj CLI, namestite Commander in Axios z naslednjim ukazom:

npm install commander axios

Ustvari novo mapo, koš, v vašem imeniku projekta in novo prazno datoteko, index.js:

mkdir bin
cd bin
touch index.js

The koš (okrajšava za "binary") mapa je pomembna, ker vsebuje datoteko vstopne točke, ki jo Node pokliče, ko zaženete svoj CLI. The index.js datoteka je ta datoteka vstopne točke. Zdaj uredite datoteko index.js in začnite graditi svoj CLI z API-jem Commander.js.

Najprej uvozite program predmet poveljnika:

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

Uporabili boste program objekt za definiranje vmesnika vašega programa, vključno s podukazi, možnostmi in argumenti. Objekt ima ustrezne metode za vsako od teh; če želite na primer definirati podukaz, uporabite ukaz metoda.

Določite a najti podukaz za CLI, da poišče besede iz Urban Dictionary in jim doda opis s spodnjo kodo:

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

To registrira a najti ukaz, ki za njim pričakuje besedo in opis zanjo. Uporaba oglatih oklepajev pomeni, da je beseda obvezen argument; namesto tega uporabite oglate oklepaje ([]), da postane neobvezen.

Dodati morate opis, ker ga Commander.js uporablja za ustvarjanje besedila pomoči. Ko zaženete aplikacijo z pomoč ukaz, boste dobili standardni vodnik za uporabo.

Če želite to preizkusiti, dodajte naslednje:

program.parse()

Nato zaženite program in ga posredujte pomoč ukaz, da dobite spodnji izhod:

Tako bo vsaka standardna aplikacija CLI prikazala svojo pomoč uporabnikom in s programom Commander vam ni treba skrbeti, da bi jo ustvarili sami. The -h in -- pomoč možnosti so uporabne za preverjanje vodnika za uporabo ukaza.

Določanje možnosti in priprava končnega programa

Možnost določite tudi z veriženjem možnost metodo do definicije ukaza.

Tukaj je opisano, kako definirate možnost za vključitev primerov v definicije besed:

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

Tukaj je opisano, kako definirati možnost, ki določa število vrnjenih definicij:

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

The možnost metoda sprejme dva parametra niza, enega za ime možnosti (tako kratke kot dolge oblike) in drugega za njen opis. Dodatek [znesek] argument v štetje možnost je vrednost za število definicij za prikaz.

Zadnja metoda za dodajanje je ukrepanje metoda. Izvajali boste najti funkcionalnost ukaza znotraj te metode. Dodajte ga v verigo, tako da bo vaša koda zdaj videti takole:

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) => {});

S to nastavitvijo je tukaj ukaz za tri definicije lol s primeri bo videti takole:

urbanary-cli find lol -e -c 3

Ali z uporabo dolge oblike vsake možnosti:

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

Preveri Poveljnikova stran npm če želite izvedeti več o tem in kako prilagoditi njegove funkcije za vaše različne primere uporabe.

Izvajanje funkcionalnosti programa

Najprej uvozite Axios v svoj index.js datoteko na naslednji način:

const axios = require('axios');

Nato v funkcijskem telesu ukrepanje, lahko implementirate logiko za pošiljanje zahtev Urban Dictionary in prikaz rezultatov glede na vaše možnosti.

Začnite tako, da definirate svojo zahtevo:

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'
}
}

Nato pošljite zahtevo API-ju z uporabo Axios z naslednjo kodo:

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

Edina lastnost, ki jo potrebujete iz podatkov odziva, je seznam lastnost, ki vsebuje definicije in primere.

Še vedno v poskusi blok, dodajte to logiko za obravnavo možnosti in prikažite rezultate na naslednji način:

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}`);
}

Ta koda ovrednoti argumente ukaza z uporabo stavkov if-else, da določi, kako prikazati izhod. Če je primer in štetje možnosti so posredovane, se ponavlja wordData in natisne določeno število definicij in primerov z njimi.

Če opravite samo štetje, prikaže toliko definicij brez primerov. Če opravite samo primer, prikaže eno definicijo s primerom stavka. The drugače stavek je privzeto vedenje za tiskanje samo definicije, če ne podate nobene možnosti.

Aplikacija je zdaj pripravljena, zato je naslednji korak, da jo naredite izvršljivo. Začnite z dodajanjem shebang linija na začetek vaše datoteke bin/index.js, da jo lahko zaženete kot samostojen skript:

#!/usr/bin/env node

Nato odprite svoj package.json datoteko, uredite vrednost glavni lastnino in dodajte a koš lastnost za njim takole:

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

Ključ urbanary-cli, Spodaj koš je ukaz, ki ga boste vnesli v terminal za zagon aplikacije. Zato se prepričajte, da tam uporabljate primerno ime, ko gradite aplikacije ukazne vrstice.

Teči npm namestite -g da aplikacijo namestite globalno, in aplikacijo boste lahko izvedli kot ukaz s svojega terminala.

Spodnja slika prikazuje postopek namestitve in testni ukaz za iskanje pomena lmk:

Lahko ga objavite tudi v registru paketov npm tako, da zaženete npm objavi v terminalu znotraj projektnega imenika. Zaradi tega ga lahko namesti kdor koli od koder koli namestitev npm.

Lažje je sestaviti in objaviti vašo aplikacijo z Node.js v primerjavi s tem, ko ste zgradite CLI s tehnologijami, kot je Rust.

Izdelajte funkcionalne aplikacije CLI z Node.js

Ne glede na to, ali delate na paketu npm in potrebujete pripomoček CLI, ki ga spremlja, ali pa samo želite zgraditi orodje za izboljšanje vašega poteka dela kot razvijalec. S paketom Node.js Commander imate vse, kar potrebujete, da uresničite svojo idejo.

Lahko greste tudi dlje z uporabo drugih knjižnic za ustvarjanje izboljšanih izkušenj CLI za vaše aplikacije. Node.js je dovolj robusten, da služi vašim namenom brez večjih težav.