Uzziniet, kā izveidot programmu ar standarta komandrindas interfeisu, izmantojot šo noderīgo bibliotēku.

CLI (Command Line Interface) lietojumprogrammas ir vienkāršotas teksta programmas, kas darbojas terminālī, lai veiktu noteiktus uzdevumus. CLI lietojumprogrammām ir izšķiroša nozīme gandrīz katra izstrādātāja un IT profesionāļa darbplūsmā.

Tie galvenokārt ir utilīta rīki, kas mijiedarbojas ar operētājsistēmu vai lietojumprogrammām instalēta lokāli vai pieejama internetā, lai veiktu uzdevumu atbilstoši lietotāja ievadei un direktīvas.

Izpratne par CLI lietojumprogrammām

Komandrindas saskarne ļauj mijiedarboties ar programmu, ierakstot teksta rindiņas. Daudzas CLI programmas darbojas atšķirīgi atkarībā no komandas, kuru izmantojat to palaišanai.

Piemēram, ls programma parāda faila informāciju un direktoriju saturu. Varat to palaist šādi:

ls -l /home

Šī komanda ietver:

  • Programmas nosaukums: ls.
  • Opcija (vai karogs). Šajā gadījumā, -l ir opcija, kas ir saīsinājums no "long" un sniedz detalizētāku informāciju.
  • Strīds, /home. Šeit arguments norāda ceļu uz direktoriju, kurā tiek rādīta informācija.

Lai gan katra programma var definēt savu komandrindas saskarni, daži elementi ir izplatīti un plaši izmantoti. Jums jāievēro šie standarti, lai kāds, kurš pārzina komandrindas saskarni, varētu viegli izmantot jūsu programmas.

Kas ir Commander.js?

Commander.js ir pakotne, kas ļauj izveidot CLI lietotnes pakalpojumā Node.js. Tam ir bagātīga funkciju bibliotēka, kas ļauj izveidot standarta CLI lietojumprogrammu, veicot lielu daļu smagā darba. Jums tikai jādefinē komandas, opcijas un funkcionalitāte savai CLI lietotnei.

Apvienojot to ar citām pakotnēm, piemēram, Chalk.js stilam, varat ātri izveidot pilnībā funkcionējošu CLI lietotni pakalpojumā Node.js.

CLI lietojumprogrammas izveide pakalpojumā Node.js, izmantojot Commander.js

Apsveriet CLI lietotnes piemēru, urbanary-cli, kas meklē vārdu nozīmi un sociālo mediju saīsinājumus no Pilsētas vārdnīca. Jūs uzzināsit, kā izveidot CLI un publicēt to vietnē npm pakotņu reģistru, lai citi to varētu instalēt.

Izveidojiet jaunu mapi un inicializējiet jaunu Node.js projektu ar šādām komandām:

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

Šī CLI izmantos Axios HTTP pieprasījumu sūtīšanai uz Urban Dictionary API. Tu vari izmantot Ātrā API lai pārbaudītu galapunktus un skatītu akreditācijas datus.

Vienkārša CLI ar apakškomandu un palīdzību

Lai sāktu veidot savu CLI, instalējiet Commander un Axios ar šādu komandu:

npm install commander axios

Izveidojiet jaunu mapi, atkritumu tvertne, jūsu projekta direktorijā un jaunu tukšu failu, index.js:

mkdir bin
cd bin
touch index.js

The atkritumu tvertne (saīsinājums no "binārā") mape ir svarīga, jo tajā ir ieejas punkta fails, ko Node izsauc, kad palaižat CLI. The index.js fails ir šis ieejas punkta fails. Tagad rediģējiet failu index.js un sāciet veidot savu CLI, izmantojot Commander.js API.

Pirmkārt, importējiet programma objekts no komandiera:

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

Jūs izmantosit programma objektu, lai definētu programmas saskarni, tostarp apakškomandas, opcijas un argumentus. Katram objektam ir atbilstošas ​​metodes; piemēram, lai definētu apakškomandu, izmantojiet komandu metodi.

Definējiet a atrast apakškomandu, lai CLI meklētu vārdus no Urban Dictionary un pievienotu tai aprakstu, izmantojot tālāk norādīto kodu:

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

Tas reģistrē a atrast komanda, kas sagaida vārdu pēc tās, un tās aprakstu. Leņķiekavas nozīmē, ka vārds ir obligāts arguments; tā vietā izmantojiet kvadrātiekavas ([]), lai padarītu to neobligātu.

Jums vajadzētu pievienot aprakstu, jo Commander.js to izmanto palīdzības teksta ģenerēšanai. Palaižot lietojumprogrammu ar palīdzēt komandu, jūs iegūsit standarta lietošanas rokasgrāmatu.

Lai to pārbaudītu, pievienojiet:

program.parse()

Pēc tam palaidiet programmu un nododiet to palīdzēt komandu, lai iegūtu zemāk esošo izvadi:

Šādi jebkura standarta CLI lietojumprogramma parādīs savu palīdzību lietotājiem, un, izmantojot Commander, jums nav jāuztraucas par tās izveidi pašam. The -h un -- palīdzēt opcijas ir noderīgas, lai pārbaudītu komandas lietošanas rokasgrāmatu.

Opciju noteikšana un galīgās programmas sagatavošana

Varat arī definēt opciju, savienojot ķēdi opciju metodi komandas definīcijai.

Tālāk ir norādīts, kā definēt opciju, lai vārdu definīcijās iekļautu piemērus.

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

Tālāk ir norādīts, kā definēt opciju, norādot atgriežamo definīciju skaitu:

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

The opciju metode pieņem divus virknes parametrus, vienu opcijas nosaukumam (gan īsajā, gan garajā formā), bet otru tās aprakstam. Papildu [summa] arguments skaitīt opcija ir parādāmo definīciju skaita vērtība.

Tagad pēdējā pievienošanas metode ir darbība metodi. Jūs īstenosit atrast komandas funkcionalitāti šīs metodes ietvaros. Pievienojiet to ķēdei, lai jūsu kods tagad izskatītos šādi:

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

Izmantojot šo iestatījumu, tālāk ir norādīta komanda, lai iegūtu trīs definīcijas lol ar piemēriem izskatīsies šādi:

urbanary-cli find lol -e -c 3

Vai, izmantojot katras opcijas garo formu:

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

Pārbaudiet Komandiera npm lapa lai uzzinātu vairāk par to un kā pielāgot tās funkcijas dažādiem lietošanas gadījumiem.

Programmas funkcionalitātes ieviešana

Pirmkārt, importējiet Axios savā index.js failu šādi:

const axios = require('axios');

Pēc tam funkcijas pamattekstā darbībaparametru, varat ieviest loģiku, lai veiktu pieprasījumus Urban Dictionary un parādītu rezultātus atbilstoši savām iespējām.

Sāciet, definējot savu pieprasījumu:

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

Pēc tam iesniedziet pieprasījumu API, izmantojot Axios ar šādu kodu:

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

Vienīgais īpašums, kas jums nepieciešams no atbildes datiem, ir sarakstu īpašums, kas satur definīcijas un piemērus.

Joprojām atrodas mēģināt bloku, pievienojiet šo loģiku, lai apstrādātu opcijas un parādītu rezultātus šādi:

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 kods novērtē komandas argumentus, izmantojot if-else paziņojumus, lai noteiktu, kā parādīt izvadi. Ja piemērs un skaitīt opcijas ir nodotas, tas atkārtojas wordData un kopā ar tiem izdrukā norādīto definīciju un piemēru skaitu.

Ja izturēsi tikai skaitīt, tas parāda tik daudz definīciju bez piemēriem. Ja izturēsi tikai piemērs, tas parāda vienu definīciju ar teikuma piemēru. The cits paziņojums ir noklusējuma darbība, lai drukātu tikai definīciju, ja neizturat nevienu opciju.

Lietojumprogramma tagad ir gatava, tāpēc nākamais solis ir padarīt to izpildāmu. Sāciet ar pievienošanu Šebangas līnija uz faila bin/index.js sākumu, lai jūs varētu palaist to kā atsevišķu skriptu:

#!/usr/bin/env node

Pēc tam atveriet savu pack.json failu, rediģējiet vērtību galvenais īpašumu un pievienojiet a atkritumu tvertne īpašums aiz tā šādi:

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

Atslēga urbanary-cli, zem atkritumu tvertne ir komanda, kas jāievada terminālī, lai palaistu lietojumprogrammu. Tāpēc, veidojot komandrindas lietojumprogrammas, noteikti izmantojiet atbilstošu nosaukumu.

Skrien npm instalēšana -g lai instalētu lietojumprogrammu globāli, un jūs varēsiet izpildīt lietojumprogrammu kā komandu no sava termināļa.

Tālāk esošajā attēlā parādīts instalēšanas process un testa komanda, lai atrastu nozīmi lmk:

Varat arī publicēt to npm pakotņu reģistrā, palaižot npm publicēt terminālī projekta direktorijā. Tas padara to instalējamu ikvienam no jebkuras vietas npm instalēšana.

Lietojumprogrammu, izmantojot Node.js, ir vieglāk izveidot un publicēt, salīdzinot ar to, ko lietojat veidojiet CLI ar tādām tehnoloģijām kā Rust.

Veidojiet funkcionālas CLI lietojumprogrammas, izmantojot Node.js

Neatkarīgi no tā, vai strādājat pie npm pakotnes un tai ir nepieciešama CLI utilīta, vai arī vēlaties vienkārši izveidot rīku, lai uzlabotu savu kā izstrādātāja darbplūsmu. Jums ir viss nepieciešamais, lai īstenotu savu ideju, izmantojot Node.js Commander pakotni.

Varat arī iet tālāk, izmantojot citas bibliotēkas, lai savām lietojumprogrammām izveidotu uzlabotu CLI pieredzi. Node.js ir pietiekami izturīgs, lai bez lielām grūtībām kalpotu jūsu mērķiem.