Sužinokite, kaip sukurti programą su standartine komandų eilutės sąsaja, naudodami šią naudingą biblioteką.

CLI (komandinės eilutės sąsajos) programos yra supaprastintos teksto programos, kurios veikia terminale, kad atliktų konkrečias užduotis. CLI programos vaidina lemiamą vaidmenį beveik kiekvieno kūrėjo ir IT specialisto darbo eigoje.

Dažniausiai jie yra naudingi įrankiai, sąveikaujantys su operacine sistema arba programomis, kurios yra abi įdiegta vietoje arba pasiekiama internetu, kad atliktų užduotį pagal vartotojo įvestį ir direktyvas.

CLI programų supratimas

Komandinės eilutės sąsaja leidžia sąveikauti su programa įvedant teksto eilutes. Daugelis CLI programų veikia skirtingai, priklausomai nuo komandos, kurią naudojate jas paleisti.

Pavyzdžiui, ls programa rodo failo informaciją ir katalogų turinį. Galite paleisti taip:

ls -l /home

Ši komanda apima:

  • Programos pavadinimas: ls.
  • Parinktis (arba vėliavėlė). Tokiu atveju, -l yra parinktis, kuri yra trumpinys „ilgas“ ir pateikia išsamesnę informaciją.
  • instagram viewer
  • Argumentas, /home. Čia argumentas nurodo kelią į katalogą, kuriame bus rodoma informacija.

Nors kiekviena programa gali apibrėžti savo komandinės eilutės sąsają, tam tikri elementai yra įprasti ir plačiai naudojami. Turėtumėte vadovautis šiais standartais, kad kažkas, kas yra susipažinęs su komandinės eilutės sąsaja, galėtų lengvai naudoti jūsų programas.

Kas yra Commander.js?

Commander.js yra paketas, leidžiantis kurti CLI programas Node.js. Jame yra gausi funkcijų biblioteka, leidžianti sukurti standartinę CLI programą ir atlikti daug sunkaus darbo. Jums tereikia apibrėžti savo CLI programos komandas, parinktis ir funkcijas.

Sujungę jį su kitais paketais, pvz., Chalk.js stiliaus formavimui, galite greitai sukurti visiškai veikiančią CLI programą Node.js.

CLI programos kūrimas Node.js naudojant Commander.js

Apsvarstykite CLI programos pavyzdį, urbanary-klis, kuriame ieškoma žodžių reikšmės ir socialinės žiniasklaidos santrumpų Miesto žodynas. Sužinosite, kaip sukurti CLI ir paskelbti jį npm paketo registrą, kad kiti galėtų jį įdiegti.

Sukurkite naują aplanką ir inicijuokite naują Node.js projektą naudodami šias komandas:

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

Šis CLI naudos Axios siųsti HTTP užklausas į Urban Dictionary API. Tu gali naudoti Greitoji API norėdami patikrinti galinius taškus ir peržiūrėti kredencialus.

Paprasta CLI su papildoma komanda ir pagalba

Norėdami pradėti kurti savo CLI, įdiekite Commander ir Axios naudodami šią komandą:

npm install commander axios

Sukurti naują aplanką, šiukšliadėžė, savo projekto kataloge ir naują tuščią failą, index.js:

mkdir bin
cd bin
touch index.js

The šiukšliadėžė („dvejetainis“) aplankas yra svarbus, nes jame yra įvesties taško failas, kurį „Node“ iškviečia, kai paleidžiate CLI. The index.js failas yra šis įėjimo taško failas. Dabar redaguokite failą index.js ir pradėkite kurti savo CLI naudodami Commander.js API.

Pirma, importuokite programa objektas iš vado:

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

Jūs naudosite programa objektą, kad apibrėžtumėte programos sąsają, įskaitant antrines komandas, parinktis ir argumentus. Objektas turi atitinkamus metodus kiekvienam iš jų; pavyzdžiui, norėdami apibrėžti antrinę komandą, naudokite komandą metodas.

Apibrėžkite a rasti subkomandą, kad CLI surastų žodžius iš miesto žodyno ir pridėtų jo aprašymą naudodami toliau pateiktą kodą:

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

Tai registruoja a rasti komanda, po kurios tikimasi žodžio ir jos aprašymo. Kampinių skliaustų naudojimas reiškia, kad žodis yra būtinas argumentas; vietoj to naudokite laužtinius skliaustus ([]), kad jis būtų neprivalomas.

Turėtumėte pridėti aprašą, nes Commander.js jį naudoja pagalbos tekstui generuoti. Kai paleisite programą su padėti komandą, gausite standartinį naudojimo vadovą.

Norėdami tai išbandyti, pridėkite:

program.parse()

Tada paleiskite programą ir perduokite ją padėti komanda, kad gautumėte toliau pateiktą išvestį:

Taip bet kuri standartinė CLI programa parodys savo pagalbą vartotojams, o naudojant Commander jums nereikės rūpintis, kad ją sukurtumėte patys. The -h ir --padėkite parinktys yra naudingos norint patikrinti komandos naudojimo vadovą.

Pasirinkimų nustatymas ir galutinės programos paruošimas

Taip pat galite apibrėžti parinktį sujungdami grandinę variantas metodas prie komandos apibrėžimo.

Štai kaip apibrėžti parinktį įtraukti pavyzdžius į žodžių apibrėžimus:

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

Štai kaip apibrėžti parinktį, nurodant grąžintinų apibrėžimų skaičių:

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

The variantas metodas priima du eilutės parametrus, vieną – parinkties pavadinimui (ir trumposioms, ir ilgosioms formoms), o kitą – jos aprašymui. Papildomas [suma] argumentas skaičiuoti parinktis yra rodomų apibrėžimų skaičiaus reikšmė.

Dabar paskutinis būdas pridėti yra veiksmas metodas. Jūs įgyvendinsite rasti komandos funkcionalumą pagal šį metodą. Pridėkite jį prie grandinės, kad jūsų kodas dabar atrodytų taip:

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

Naudojant šią sąranką, štai kokia komanda gauti tris apibrėžimus daug juoko su pavyzdžiais atrodys taip:

urbanary-cli find lol -e -c 3

Arba naudokite ilgąją kiekvienos parinkties formą:

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

Patikrinkite Vado npm puslapis Norėdami sužinoti daugiau apie tai ir kaip pritaikyti jo funkcijas įvairiems naudojimo atvejams.

Programos funkcionalumo įgyvendinimas

Pirma, importuokite Axios į savo index.js failą taip:

const axios = require('axios');

Tada funkcijos korpuse veiksmasparametrą, galite įdiegti logiką, kad pateiktumėte užklausas miesto žodynui ir rodytumėte rezultatus pagal savo parinktis.

Pradėkite apibrėždami savo prašymą:

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

Tada pateikite užklausą API naudodami „Axios“ naudodami šį kodą:

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

Vienintelė ypatybė, kurios jums reikia iš atsakymo duomenų, yra sąrašą savybė, kurioje yra apibrėžimų ir pavyzdžių.

Vis dar yra bandyti bloką, pridėkite šią logiką, kad galėtumėte tvarkyti parinktis ir rodyti rezultatus taip:

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

Šis kodas įvertina komandos argumentus naudodamas if-else teiginius, kad nustatytų, kaip rodyti išvestį. Jei pavyzdys ir skaičiuoti parinktys perduodamos, ji kartojasi wordData ir su jais atspausdina nurodytą skaičių apibrėžimų ir pavyzdžių.

Jei tik praeisite skaičiuoti, rodomas tiek apibrėžimų be pavyzdžių. Jei tik praeisite pavyzdys, rodomas vienas apibrėžimas su sakinio pavyzdžiu. The Kitas Teiginys yra numatytasis elgesys spausdinant tik apibrėžimą, jei nepateikiate jokių parinkčių.

Dabar programa yra paruošta, todėl kitas žingsnis yra padaryti ją vykdomą. Pradėkite pridėdami „Shebang“ linija bin/index.js failo pradžioje, kad galėtumėte jį paleisti kaip atskirą scenarijų:

#!/usr/bin/env node

Tada atidarykite savo package.json failą, redaguokite reikšmę pagrindinis nuosavybę ir pridėkite a šiukšliadėžė turtas po jo taip:

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

Raktas urbanistinis-kli, pagal šiukšliadėžė yra komanda, kurią įvesite terminale, kad paleistumėte programą. Taigi kurdami komandų eilutės programas būtinai naudokite tinkamą pavadinimą.

Bėk npm įdiegti -g įdiegti programą visame pasaulyje, ir galėsite vykdyti programą kaip komandą iš savo terminalo.

Žemiau esančiame paveikslėlyje parodytas diegimo procesas ir bandomoji komanda, norint rasti reikšmę lmk:

Taip pat galite paskelbti jį npm paketo registre paleisdami npm paskelbti terminale projekto kataloge. Tai leidžia jį įdiegti bet kuriam asmeniui iš bet kurios vietos npm diegimas.

Naudodami Node.js programą sukurti ir paskelbti yra lengviau, nei jūs kurkite CLI naudodami tokias technologijas kaip „Rust“..

Sukurkite funkcines CLI programas naudodami Node.js

Nesvarbu, ar dirbate su npm paketu ir kartu su juo reikia CLI paslaugų programos, ar tiesiog norite sukurti įrankį, kuris pagerintų savo kaip kūrėjo darbo eigą. Turite viską, ko reikia, kad įgyvendintumėte savo idėją naudodami „Node.js Commander“ paketą.

Taip pat galite eiti toliau, naudodami kitas bibliotekas, kad sukurtumėte patobulintą CLI patirtį savo programoms. Node.js yra pakankamai tvirtas, kad be didelių rūpesčių galėtų tarnauti jūsų tikslams.