Naučte sa, ako vytvoriť program so štandardným rozhraním príkazového riadka pomocou tejto užitočnej knižnice.
Aplikácie CLI (Command Line Interface) sú zjednodušené textové aplikácie, ktoré bežia v termináli na dokončenie špecifických úloh. Aplikácie CLI zohrávajú kľúčovú úlohu v pracovnom postupe takmer každého vývojára a IT profesionála.
Sú to väčšinou pomocné nástroje, ktoré interagujú s operačným systémom alebo aplikáciami, ktoré sú nainštalovaný lokálne alebo dostupný cez internet na vykonanie úlohy podľa vstupu používateľa a smernice.
Pochopenie aplikácií CLI
Rozhranie príkazového riadka umožňuje interakciu s programom zadávaním riadkov textu. Mnohé programy CLI bežia odlišne v závislosti od príkazu, ktorý používate na ich spustenie.
Napríklad, program ls zobrazí informácie o súbore a obsah adresárov. Môžete to spustiť takto:
ls -l /home
Tento príkaz zahŕňa:
- Názov programu: ls.
- Možnosť (alebo príznak). V tomto prípade, -l je možnosť, ktorá je skratka pre „long“ a poskytuje podrobnejšie informácie.
- Hádka, /home. Argument tu určuje cestu k adresáru, pre ktorý sa majú zobraziť informácie.
Hoci každý program môže definovať svoje vlastné rozhranie príkazového riadka, určité prvky sú bežné a široko používané. Mali by ste dodržiavať tieto štandardy, aby niekto, kto pozná rozhranie príkazového riadka, mohol ľahko používať vaše programy.
Čo je Commander.js?
Commander.js je balík, ktorý vám umožňuje vytvárať aplikácie CLI v Node.js. Má bohatú knižnicu funkcií, ktoré vám umožnia vytvoriť štandardnú aplikáciu CLI, ktorá vykonáva veľkú časť ťažkej práce. Musíte definovať iba príkazy, možnosti a funkcie pre vašu aplikáciu CLI.
V kombinácii s inými balíkmi, ako je Chalk.js na úpravu štýlu, môžete rýchlo vytvoriť plne funkčnú aplikáciu CLI v Node.js.
Vytvorenie aplikácie CLI v Node.js pomocou Commander.js
Zvážte príklad aplikácie CLI, urbanary-cli, ktorý hľadá význam slov a skratiek sociálnych médií z mestský slovník. Dozviete sa, ako vytvoriť CLI a publikovať ho na npm register balíkov, aby si ho mohli nainštalovať ostatní.
Vytvorte nový priečinok a inicializujte nový projekt Node.js pomocou nasledujúcich príkazov:
mkdir urbanary-cli
cd urbanary-cli
npm init -y
Toto CLI použije Axios na odosielanie požiadaviek HTTP do rozhrania Urban Dictionary API. Môžeš použiť Rýchle API na kontrolu koncových bodov a zobrazenie poverení.
Jednoduché CLI s podpríkazom a pomocou
Ak chcete začať zostavovať svoje CLI, nainštalujte Commander a Axios pomocou nasledujúceho príkazu:
npm install commander axios
Vytvorte nový priečinok, kôš, v adresári projektu a nový prázdny súbor, index.js:
mkdir bin
cd bin
touch index.js
The kôš (skratka pre "binary") je dôležitá, pretože obsahuje súbor vstupných bodov, ktorý uzol volá pri spustení vášho CLI. The index.js súbor je tento súbor vstupného bodu. Teraz upravte súbor index.js a začnite vytvárať CLI pomocou Commander.js API.
Najprv importujte súbor program objekt od veliteľa:
const { program } = require('commander');
Budete používať program objekt na definovanie rozhrania vášho programu vrátane podpríkazov, volieb a argumentov. Objekt má zodpovedajúce metódy pre každú z nich; ak chcete napríklad definovať podpríkaz, použite príkaz príkaz metóda.
Definujte a Nájsť čiastkový príkaz pre CLI, aby vyhľadal slová z Urban Dictionary a pridal k nim popis pomocou nižšie uvedeného kódu:
// index.js
program
.command('find ' )
.description('find meaning of a word or abbreviation or slang')
Toto registruje a Nájsť príkaz, ktorý za ním očakáva slovo a jeho popis. Použitie lomených zátvoriek znamená, že slovo je povinný argument; použite hranaté zátvorky ([]), aby to bolo voliteľné.
Mali by ste pridať popis, pretože Commander.js ho používa na generovanie pomocného textu. Keď spustíte aplikáciu pomocou Pomoc získate štandardnú príručku použitia.
Ak to chcete otestovať, pridajte nasledujúce:
program.parse()
Potom spustite program a odovzdajte ho Pomoc príkaz na získanie výstupu nižšie:
Takto zobrazí nápovedu používateľom každá štandardná aplikácia CLI a s Commanderom si ju nemusíte robiť sami. The -h a --Pomoc možnosti sú užitočné na kontrolu používateľskej príručky pre príkaz.
Definovanie možností a príprava konečného programu
Môžete tiež definovať možnosť reťazením možnosť metódy k definícii príkazu.
Tu je postup, ako definovať možnosť zahrnúť príklady do definícií slov:
program.option('-e, --example', "Display examples")
A tu je postup, ako definovať možnosť určujúcu počet definícií, ktoré sa majú vrátiť:
program.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
The možnosť metóda akceptuje dva parametre reťazca, jeden pre názov možnosti (krátke aj dlhé formy) a druhý pre jej popis. Extra [suma] argument v počítať voľba je hodnota pre počet definícií, ktoré sa majú zobraziť.
Teraz posledná metóda na pridanie je akcie metóda. Budete implementovať Nájsť funkcie príkazu v rámci tejto metódy. Pridajte ho do reťazca tak, aby váš kód teraz vyzeral takto:
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 týmto nastavením je tu uvedený príkaz na získanie troch definícií lol s príkladmi bude vyzerať takto:
urbanary-cli find lol -e -c 3
Alebo pomocou dlhého tvaru každej možnosti:
urbanary-cli find lol --example --count 3
Odhlásiť sa Stránka veliteľa npm aby ste sa o ňom dozvedeli viac a ako prispôsobiť jeho funkcie vašim rôznym prípadom použitia.
Implementácia funkcionality programu
Najprv importujte Axios do svojho index.js súbor takto:
const axios = require('axios');
Potom v tele funkcie akcieparametra, môžete implementovať logiku na odosielanie požiadaviek do Urban Dictionary a zobrazovanie výsledkov podľa vašich možností.
Začnite definovaním požiadavky:
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'
}
}
Potom zadajte požiadavku na API pomocou Axios s nasledujúcim kódom:
try {
let resp = await axios.request(requestOptions);
console.log(`Definitions for ${word} fetched`);
wordData = resp.data.list;
} catch (err) {
console.error(err.message)
}
Jediná vlastnosť, ktorú potrebujete z údajov odpovede, je zoznam vlastnosť, ktorá obsahuje definície a príklady.
Stále v skúste blok, pridajte túto logiku na spracovanie volieb a zobrazenie výsledkov takto:
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}`);
}
Tento kód vyhodnocuje argumenty príkazu pomocou príkazov if-else na určenie spôsobu zobrazenia výstupu. Ak príklad a počítať možnosti sú odovzdané, iteruje sa cez wordData a vytlačí s nimi zadaný počet definícií a príkladov.
Iba ak prejdete počítať, zobrazuje to množstvo definícií bez príkladov. Iba ak prejdete príklad, zobrazí jednu definíciu s ukážkovou vetou. The inak príkaz je predvolené správanie, pri ktorom sa vytlačí iba definícia, ak nezadáte žiadne možnosti.
Aplikácia je teraz pripravená, takže ďalším krokom je urobiť ju spustiteľnou. Začnite pridávaním línia šebang na začiatok súboru bin/index.js, aby ste ho mohli spustiť ako samostatný skript:
#!/usr/bin/env node
Ďalej otvorte svoj package.json súbor, upravte hodnotu súboru Hlavná vlastnosť a pridajte a kôš vlastnosť po ňom takto:
"main": "./bin/index.js",
"bin": {
"urbanary-cli": "./bin/index.js"
},
Kľúč urbanary-cli, pod kôš je príkaz, ktorý zadáte do terminálu na spustenie aplikácie. Preto pri vytváraní aplikácií príkazového riadka použite vhodný názov.
Bežať npm inštalácia -g nainštalovať aplikáciu globálne a aplikáciu budete môcť spustiť ako príkaz z vášho terminálu.
Obrázok nižšie zobrazuje proces inštalácie a testovací príkaz na nájdenie významu lmk:
Môžete ho tiež zverejniť v registri balíkov npm spustením npm publikovať v termináli v adresári projektu. Vďaka tomu ho môže nainštalovať ktokoľvek odkiaľkoľvek inštalácia npm.
Je jednoduchšie vytvoriť a publikovať vašu aplikáciu pomocou Node.js, v porovnaní s tým, keď vy vytvárať CLI pomocou technológií ako Rust.
Vytvárajte funkčné aplikácie CLI pomocou Node.js
Či už pracujete na balíku npm a potrebujete nástroj CLI, ktorý ho sprevádza, alebo si len chcete vytvoriť nástroj na zlepšenie vášho pracovného postupu ako vývojár. S balíkom Node.js Commander máte všetko, čo potrebujete na to, aby ste svoj nápad priviedli k životu.
Môžete tiež zájsť ďalej pomocou iných knižníc na vytvorenie vylepšeného prostredia CLI pre vaše aplikácie. Node.js je dostatočne robustný na to, aby slúžil vašim účelom bez väčších problémov.