Opi rakentamaan ohjelma tavallisella komentoriviliittymällä tämän hyödyllisen kirjaston avulla.

CLI (Command Line Interface) -sovellukset ovat yksinkertaistettuja tekstipohjaisia ​​sovelluksia, jotka suoritetaan päätteessä suorittamaan tiettyjä tehtäviä. CLI-sovellukset ovat ratkaisevassa roolissa lähes jokaisen kehittäjän ja IT-ammattilaisen työnkulussa.

Ne ovat enimmäkseen aputyökaluja, jotka ovat vuorovaikutuksessa käyttöjärjestelmän tai sovellusten kanssa asennettuna paikallisesti tai saatavilla Internetin kautta suorittamaan tehtävä käyttäjän syötteen mukaan ja direktiivit.

CLI-sovellusten ymmärtäminen

Komentorivikäyttöliittymän avulla voit olla vuorovaikutuksessa ohjelman kanssa kirjoittamalla tekstirivejä. Monet CLI-ohjelmat toimivat eri tavalla niiden käynnistämiseen käyttämäsi komennon mukaan.

Esimerkiksi, ls-ohjelma näyttää tiedostotiedot ja hakemistojen sisältö. Voit ajaa sen näin:

ls -l /home

Tämä komento sisältää:

  • Ohjelman nimi: ls.
  • Vaihtoehto (tai lippu). Tässä tapauksessa, -l on vaihtoehto, joka on lyhenne sanoista "pitkä" ja tuottaa yksityiskohtaisempaa tietoa.
  • Argumentti, /home. Tässä argumentti määrittää polun hakemistoon, josta tiedot näytetään.

Vaikka jokainen ohjelma voi määrittää oman komentoriviliittymänsä, tietyt elementit ovat yleisiä ja laajasti käytössä. Sinun tulee noudattaa näitä standardeja, jotta joku, joka tuntee komentorivikäyttöliittymän, voi käyttää ohjelmiasi helposti.

Mikä on Commander.js?

Commander.js on paketti, jonka avulla voit rakentaa CLI-sovelluksia Node.js: ssä. Siinä on rikas kirjasto ominaisuuksia, joiden avulla voit rakentaa tavallisen CLI-sovelluksen, joka suorittaa suuren osan raskaasta työstä. Sinun tarvitsee vain määrittää komennot, asetukset ja toiminnot CLI-sovelluksellesi.

Yhdistämällä sen muihin paketteihin, kuten Chalk.js-muotoilupaketteihin, voit luoda nopeasti täysin toimivan CLI-sovelluksen Node.js: ssä.

CLI-sovelluksen luominen Node.js: ssä Commander.js: n avulla

Harkitse esimerkkiä CLI-sovelluksesta, urbanary-cli, joka etsii sanojen merkitykset ja sosiaalisen median lyhenteet Urban Dictionary. Opit luomaan CLI: n ja julkaisemaan sen npm pakettirekisteriin, jotta muut voivat asentaa sen.

Luo uusi kansio ja alusta uusi Node.js-projekti seuraavilla komennoilla:

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

Tämä CLI käyttää Axios lähettää HTTP-pyyntöjä Urban Dictionary API: lle. Voit käyttää Rapid API tarkistaaksesi päätepisteet ja tarkastellaksesi valtuustietoja.

Yksinkertainen CLI, jossa on alikomennot ja ohje

Aloita CLI: n rakentaminen asentamalla Commander ja Axios seuraavalla komennolla:

npm install commander axios

Luo uusi kansio, roskakori, projektihakemistossasi ja uusi tyhjä tiedosto, index.js:

mkdir bin
cd bin
touch index.js

The roskakori (lyhenne sanoista "binary") -kansio on tärkeä, koska se sisältää aloituspistetiedoston, jota Node kutsuu, kun suoritat CLI: n. The index.js tiedosto on tämä aloituspistetiedosto. Muokkaa nyt index.js-tiedostoa ja aloita CLI: n rakentaminen Commander.js-sovellusliittymän avulla.

Tuo ensin ohjelmoida objekti komentajalta:

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

Tulet käyttämään ohjelmoida objekti määrittääksesi ohjelman käyttöliittymän, mukaan lukien alikomennot, valinnat ja argumentit. Objektilla on vastaavat menetelmät jokaiselle näistä; Jos esimerkiksi haluat määrittää alikomennon, käytä komento menetelmä.

Määrittele a löytö alikomento CLI: lle hakemaan sanoja Urban Dictionarysta ja lisäämään sille kuvaus käyttämällä alla olevaa koodia:

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

Tämä rekisteröi a löytö komento, joka odottaa sanan perään ja kuvauksen sille. Kulmasulkujen käyttö tarkoittaa, että sana on pakollinen argumentti; käytä sen sijaan hakasulkeita ([]) tehdäksesi siitä valinnaisen.

Sinun tulee lisätä kuvaus, koska Commander.js käyttää sitä ohjetekstin luomiseen. Kun suoritat sovelluksen auta komennon, saat tavallisen käyttöoppaan.

Voit testata tämän lisäämällä seuraavat:

program.parse()

Suorita sitten ohjelma ja välitä se auta komento saadaksesi alla olevan tulosteen:

Näin mikä tahansa tavallinen CLI-sovellus näyttää ohjeensa käyttäjille, ja Commanderin avulla sinun ei tarvitse huolehtia sen luomisesta itse. The -h ja --auta vaihtoehdot ovat hyödyllisiä komennon käyttöoppaan tarkistamiseen.

Vaihtoehtojen määrittäminen ja lopullisen ohjelman valmistelu

Voit myös määrittää vaihtoehdon ketjuttamalla vaihtoehto menetelmä komennon määritelmään.

Näin voit määrittää vaihtoehdon esimerkkien sisällyttämiseksi sanojen määritelmiin:

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

Ja näin voit määrittää vaihtoehdon, joka määrittää palautettavien määritelmien määrän:

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

The vaihtoehto menetelmä hyväksyy kaksi merkkijonoparametria, yksi vaihtoehdon nimelle (sekä lyhyt että pitkä muoto) ja toinen sen kuvaukselle. Ylimääräinen [määrä] argumentti Kreivi vaihtoehto on näytettävien määritelmien lukumäärän arvo.

Nyt viimeinen tapa lisätä on toiminta menetelmä. Toteutat löytö komennon toiminnallisuus tässä menetelmässä. Lisää se ketjuun niin, että koodisi näyttää nyt tältä:

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

Tällä asetuksella saat kolme määritelmää komennolla LOL esimerkkien kanssa näyttää tältä:

urbanary-cli find lol -e -c 3

Tai käyttämällä kunkin vaihtoehdon pitkää muotoa:

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

Tarkista Komentajan npm-sivu saadaksesi lisätietoja siitä ja kuinka mukauttaa sen toimintoja erilaisiin käyttötapauksiin.

Ohjelman toiminnallisuuden toteuttaminen

Tuo ensin Axios omaan index.js tiedosto seuraavasti:

const axios = require('axios');

Sitten funktion rungossa toiminta-parametrin avulla voit toteuttaa logiikan tehdäksesi pyyntöjä Urban Dictionarylle ja näyttääksesi tuloksia vaihtoehtosi mukaan.

Aloita määrittelemällä pyyntösi:

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

Tee sitten pyyntö API: lle Axiosin avulla seuraavalla koodilla:

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

Ainoa vastaustiedoista tarvitsemasi ominaisuus on lista ominaisuus, joka sisältää määritelmiä ja esimerkkejä.

Vielä sisällä yrittää lohko, lisää tämä logiikka vaihtoehtojen käsittelemiseksi ja tulosten näyttämiseksi seuraavasti:

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

Tämä koodi arvioi komennon argumentit if-else-lauseiden avulla määrittääkseen, kuinka tulos näytetään. Jos esimerkki ja Kreivi Vaihtoehdot välitetään, se toistuu wordData ja tulostaa määritellyn määrän määritelmiä ja esimerkkejä niiden kanssa.

Jos vain ohitat Kreivi, se näyttää kyseisen määrän määritelmiä ilman esimerkkejä. Jos vain ohitat esimerkki, se näyttää yhden määritelmän esimerkkilauseen kanssa. The muu lauseke on oletustoiminto tulostaa vain määritelmä, jos et välitä mitään vaihtoehtoja.

Sovellus on nyt valmis, joten seuraava askel on tehdä siitä suoritettava. Aloita lisäämällä shebang-linja bin/index.js-tiedoston alkuun, jotta voit suorittaa sen erillisenä komentosarjana:

#!/usr/bin/env node

Avaa seuraavaksi oma package.json tiedosto, muokkaa tiedoston arvoa pää omaisuutta ja lisää a roskakori omaisuus sen jälkeen näin:

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

Avain urbanary-cli, alla roskakori on komento, jonka kirjoitat päätteeseen sovelluksen suorittamiseksi. Muista siis käyttää sopivaa nimeä, kun rakennat komentorivisovelluksiasi.

Juosta npm asennus -g asentaaksesi sovelluksen maailmanlaajuisesti, ja voit suorittaa sovelluksen komentona päätteestäsi.

Alla oleva kuva näyttää asennusprosessin ja testikomennon merkityksen löytämiseksi lmk:

Voit myös julkaista sen npm-pakettirekisteriin suorittamalla npm julkaista terminaalissa projektihakemistossa. Tämän ansiosta kuka tahansa voi asentaa sen mistä tahansa npm asennus.

Sovelluksesi rakentaminen ja julkaiseminen Node.js: n avulla on helpompaa kuin silloin, kun sinä rakentaa CLI: itä Rustin kaltaisilla teknologioilla.

Rakenna toimivia CLI-sovelluksia Node.js: n avulla

Työskenteletpä npm-paketin parissa ja tarvitset sen mukana CLI-apuohjelman tai haluat vain rakentaa työkalun, joka parantaa työnkulkuasi kehittäjänä. Sinulla on kaikki mitä tarvitset ideasi toteuttamiseen Node.js Commander -paketin avulla.

Voit myös mennä pidemmälle luomalla parempia CLI-kokemuksia sovelluksille käyttämällä muita kirjastoja. Node.js on riittävän vankka palvelemaan tavoitteitasi ilman suurta vaivaa.