Siit saate teada, kuidas seda abistavat teeki kasutades standardse käsurealiidesega programmi koostada.

CLI (Command Line Interface) rakendused on lihtsustatud tekstipõhised rakendused, mis töötavad terminalis konkreetsete ülesannete täitmiseks. CLI-rakendused mängivad pea iga arendaja ja IT-spetsialisti töövoos üliolulist rolli.

Need on enamasti utiliiditööriistad, mis suhtlevad operatsioonisüsteemi või rakendustega, mis on mõlemad installitud kohapeal või saadaval Interneti kaudu, et täita toimingut vastavalt kasutaja sisendile ja direktiivid.

CLI rakenduste mõistmine

Käsurea liides võimaldab teil programmiga suhelda, tippides tekstiridu. Paljud CLI programmid töötavad erinevalt, sõltuvalt nende käivitamiseks kasutatavast käsust.

Näiteks, ls programm kuvab failiteavet ja kataloogide sisu. Võite selle käivitada järgmiselt:

ls -l /home

See käsk sisaldab:

  • Programmi nimi: ls.
  • Valik (või lipp). Sel juhul, -l on valik, mis on lühend sõnadest "pikk" ja annab üksikasjalikumat teavet.
  • Argument, /home. Siin määrab argument kataloogi tee, mille kohta teavet näidata.

Kuigi iga programm võib määrata oma käsurea liidese, on teatud elemendid tavalised ja laialdaselt kasutusel. Peaksite neid standardeid järgima, et keegi, kes tunneb käsurea liidest, saaks teie programme hõlpsalt kasutada.

Mis on Commander.js?

Commander.js on pakett, mis võimaldab luua Node.js-is CLI-rakendusi. Sellel on rikkalik funktsioonide kogu, mis võimaldab teil luua standardse CLI-rakenduse, mis teeb suure osa raskest tööst. Peate oma CLI-rakenduse jaoks määratlema ainult käsud, suvandid ja funktsioonid.

Kombineerides selle teiste pakettidega, nagu Chalk.js stiiliks, saate kiiresti luua Node.js-is täielikult toimiva CLI rakenduse.

CLI-rakenduse loomine Node.js-is Commander.js-i abil

Vaatleme CLI-rakenduse näidet, urbanary-cli, mis otsib sõnade tähendust ja sotsiaalmeedia lühendeid Linnasõnaraamat. Saate teada, kuidas CLI-d luua ja avaldada npm pakettide registris, et teised saaksid selle installida.

Looge uus kaust ja lähtestage uus Node.js projekt järgmiste käskudega:

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

See CLI kasutab Axios HTTP päringute saatmiseks Urban Dictionary API-le. Sa võid kasutada Kiire API lõpp-punktide kontrollimiseks ja mandaatide vaatamiseks.

Lihtne CLI koos alamkäsu ja abiga

CLI loomise alustamiseks installige Commander ja Axios järgmise käsuga:

npm install commander axios

Looge uus kaust, prügikast, oma projekti kataloogis ja uus tühi fail, index.js:

mkdir bin
cd bin
touch index.js

The prügikast (lühend sõnadest "binaarne") on oluline, kuna see sisaldab sisestuspunkti faili, mida Node CLI käivitamisel kutsub. The index.js fail on see sisenemispunkti fail. Nüüd muutke faili index.js ja alustage oma CLI loomist Commander.js API abil.

Esiteks importige programm objekt komandörilt:

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

Sa kasutad programm objekti, et määratleda oma programmi liides, sealhulgas alamkäsud, suvandid ja argumendid. Objektil on igaühe jaoks vastavad meetodid; näiteks alamkäsu määratlemiseks kasutage käsk meetod.

Määratlege a leida alamkäsk CLI-le, et otsida sõnu Urban Dictionaryst ja lisada sellele kirjeldus, kasutades allolevat koodi:

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

See registreerib a leida käsk, mis ootab pärast seda sõna ja selle kirjeldust. Nurksulgude kasutamine tähendab, et sõna on nõutav argument; kasutage selle asemel nurksulge ([]), et muuta see valikuliseks.

Peaksite lisama kirjelduse, kuna Commander.js kasutab seda abiteksti loomiseks. Kui käivitate rakenduse rakendusega abi käsku, saate standardse kasutusjuhendi.

Selle testimiseks lisage järgmine:

program.parse()

Seejärel käivitage programm ja edastage see abi käsk alloleva väljundi saamiseks:

Nii kuvab iga standardne CLI rakendus kasutajatele oma abi ja Commanderiga ei pea te selle ise loomise pärast muretsema. The -h ja -- aidake suvandid on kasulikud käsu kasutusjuhendi kontrollimiseks.

Valikute määratlemine ja lõpliku programmi koostamine

Samuti saate määrata valiku aheldades valik meetod käsu definitsioonile.

Siin on, kuidas määratleda valik näidete lisamiseks sõnade definitsioonidesse.

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

Ja siin on, kuidas määratleda suvand, mis määrab tagastatavate definitsioonide arvu:

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

The valik meetod aktsepteerib kahte stringiparameetrit, millest üks on valiku nime jaoks (nii lühike kui ka pikk vorm) ja teine ​​selle kirjelduse jaoks. Lisa [summa] argument aastal loendama valik on kuvatavate definitsioonide arvu väärtus.

Nüüd on viimane meetod lisamiseks tegevust meetod. Te rakendate leida käsu funktsioonid selle meetodi raames. Lisage see ahelasse, nii et teie kood näeks nüüd välja järgmine:

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

Selle seadistuse puhul on järgmine käsk kolme määratluse saamiseks lol koos näidetega näeb välja selline:

urbanary-cli find lol -e -c 3

Või kasutades iga valiku pikka vormi:

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

Kontrollige Komandöri npm leht selle kohta lisateabe saamiseks ja selle funktsioonide kohandamiseks teie erinevateks kasutusjuhtudeks.

Programmi funktsionaalsuse rakendamine

Esiteks importige Axios oma sisse index.js faili järgmiselt:

const axios = require('axios');

Seejärel funktsiooni kehas tegevustparameetriga saate rakendada loogikat linnasõnastikule päringute tegemiseks ja tulemuste kuvamiseks vastavalt teie valikutele.

Alustage oma taotluse määratlemisest:

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

Seejärel esitage taotlus API-le, kasutades Axiost järgmise koodiga:

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

Ainus atribuut, mida vastuseandmetest vajate, on nimekirja atribuut, mis sisaldab määratlusi ja näiteid.

Ikka veel proovige blokki, lisage see loogika valikute käsitlemiseks ja tulemuste kuvamiseks järgmiselt:

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

See kood hindab käsu argumente if-else lausete abil, et määrata, kuidas väljundit kuvada. Kui näide ja loendama valikud on läbi, see itereerub läbi wordData ja prindib koos nendega määratud arvu definitsioone ja näiteid.

Kui ainult läbite loendama, kuvab see nii palju definitsioone ilma näideteta. Kui ainult läbite näide, kuvab see ühe definitsiooni koos näitelausega. The muidu lause on vaikekäitumine ainult definitsiooni printimiseks, kui te ühtegi valikut ei edasta.

Rakendus on nüüd valmis, nii et järgmine samm on muuta see käivitatavaks. Alusta lisamisega shebangi liin faili bin/index.js algusesse, et saaksite seda käivitada eraldiseisva skriptina:

#!/usr/bin/env node

Järgmisena avage oma package.json faili, muutke väärtust peamine vara ja lisage a prügikast vara pärast seda nii:

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

Võti linna-cli, all prügikast on käsk, mille sisestate oma terminali rakenduse käivitamiseks. Seega kasutage käsurearakenduste loomisel kindlasti sobivat nime.

Jookse npm install -g rakenduse globaalseks installimiseks ja saate rakendust oma terminalist käsuna käivitada.

Alloleval pildil on näidatud installiprotsess ja testkäsk selle tähenduse leidmiseks lmk:

Samuti saate selle käivitades avaldada npm-paketi registris npm avaldada terminalis projekti kataloogis. See muudab selle installitavaks kõigile, kes kasutavad seda kõikjal npm installimine.

Rakendust on Node.js-iga lihtsam koostada ja avaldada, võrreldes sellega, millal te kasutate ehitada CLI-sid selliste tehnoloogiatega nagu Rust.

Funktsionaalsete CLI-rakenduste loomine Node.js-iga

Olenemata sellest, kas töötate npm-paketi kallal ja vajate sellega kaasas CLI-utiliiti või soovite lihtsalt luua tööriista oma töövoo parandamiseks arendajana. Paketiga Node.js Commander on kõik, mida vajate oma idee ellu viimiseks.

Samuti võite minna kaugemale, kasutades oma rakenduste jaoks täiustatud CLI-kogemuste loomiseks muid teeke. Node.js on piisavalt vastupidav, et teenida teie eesmärke ilma suuremate probleemideta.