Naučte se, jak vytvořit program se standardním rozhraním příkazového řádku pomocí této užitečné knihovny.
Aplikace CLI (Command Line Interface) jsou zjednodušené textové aplikace, které se spouštějí v terminálu k provádění specifických úkolů. Aplikace CLI hrají zásadní roli v pracovním postupu téměř každého vývojáře a IT profesionála.
Jsou to většinou pomocné nástroje, které komunikují s operačním systémem nebo aplikacemi, které jsou buď nainstalované lokálně nebo dostupné přes internet k provedení úkolu podle zadání uživatele a směrnice.
Pochopení aplikací CLI
Rozhraní příkazového řádku vám umožňuje pracovat s programem psaním řádků textu. Mnoho programů CLI běží odlišně v závislosti na příkazu, který používáte k jejich spuštění.
Například, program ls zobrazí informace o souboru a obsah adresářů. Můžete to spustit takto:
ls -l /home
Tento příkaz zahrnuje:
- Název programu: ls.
- Možnost (nebo příznak). V tomto případě, -l je volba, která je zkratka pro "dlouhá" a poskytuje podrobnější informace.
- Hádka, /home. Zde argument určuje cestu k adresáři, pro který se mají zobrazit informace.
I když každý program může definovat své vlastní rozhraní příkazového řádku, určité prvky jsou běžné a široce používané. Měli byste se řídit těmito standardy, aby někdo, kdo je obeznámen s rozhraním příkazového řádku, mohl snadno používat vaše programy.
Co je Commander.js?
Commander.js je balíček, který vám umožní vytvářet aplikace CLI v Node.js. Má bohatou knihovnu funkcí, které vám umožní vytvořit standardní aplikaci CLI, která provádí většinu těžké práce. Musíte pouze definovat příkazy, možnosti a funkce pro vaši aplikaci CLI.
Kombinací s dalšími balíčky, jako je Chalk.js pro styling, můžete rychle vytvořit plně funkční aplikaci CLI v Node.js.
Vytvoření aplikace CLI v Node.js pomocí Commander.js
Zvažte příklad aplikace CLI, urbanary-cli, který vyhledává význam slov a zkratek sociálních sítí městský slovník. Dozvíte se, jak vytvořit CLI a publikovat jej na npm registru balíčků, aby si jej mohli nainstalovat ostatní.
Vytvořte novou složku a inicializujte nový projekt Node.js pomocí následujících příkazů:
mkdir urbanary-cli
cd urbanary-cli
npm init -y
Toto CLI použije Axios k odesílání požadavků HTTP do Urban Dictionary API. Můžeš použít Rychlé API ke kontrole koncových bodů a zobrazení přihlašovacích údajů.
Jednoduché CLI s dílčím příkazem a nápovědou
Chcete-li začít sestavovat CLI, nainstalujte Commander a Axios pomocí následujícího příkazu:
npm install commander axios
Vytvořit novou složku, zásobník, ve vašem projektovém adresáři a nový prázdný soubor, index.js:
mkdir bin
cd bin
touch index.js
The zásobník (zkratka pro "binary") je důležitá, protože obsahuje soubor vstupních bodů, který Node volá při spuštění vašeho CLI. The index.js soubor je tento soubor vstupního bodu. Nyní upravte soubor index.js a začněte vytvářet CLI pomocí Commander.js API.
Nejprve importujte program objekt od velitele:
const { program } = require('commander');
Budete používat program objekt k definování rozhraní vašeho programu, včetně dílčích příkazů, voleb a argumentů. Objekt má odpovídající metody pro každou z nich; například k definování dílčího příkazu použijte příkaz příkaz metoda.
Definujte a nalézt dílčí příkaz pro CLI k vyhledání slov z Urban Dictionary a přidání popisu pomocí níže uvedeného kódu:
// index.js
program
.command('find ' )
.description('find meaning of a word or abbreviation or slang')
Toto registruje a nalézt příkaz, který za ním očekává slovo a jeho popis. Použití lomených závorek znamená, že slovo je povinný argument; místo toho použijte hranaté závorky ([]), aby byl volitelný.
Měli byste přidat popis, protože Commander.js jej používá ke generování textu nápovědy. Když spustíte aplikaci s Pomoc získáte standardní návod k použití.
Chcete-li to otestovat, přidejte následující:
program.parse()
Poté spusťte program a předejte jej Pomoc příkaz k získání výstupu níže:
Takto zobrazí nápovědu uživatelům jakákoli standardní aplikace CLI a s Commanderem se nemusíte starat o její vytvoření sami. The -h a --Pomoc možnosti jsou užitečné pro kontrolu návodu k použití příkazu.
Definování možností a příprava konečného programu
Možnost také definujete zřetězením volba metody k definici příkazu.
Zde je návod, jak definovat možnost zahrnout příklady do definic slov:
program.option('-e, --example', "Display examples")
A zde je návod, jak definovat možnost určující počet definic, které se mají vrátit:
program.option(
'-c, --count [amount]',
'amount of definitions to display (max is 10)'
)
The volba metoda přijímá dva parametry řetězce, jeden pro název možnosti (krátké i dlouhé formy) a druhý pro její popis. Extra [množství] argument v počet volba je hodnota počtu definic k zobrazení.
Nyní je poslední metodou, kterou lze přidat akce metoda. Budete implementovat nalézt funkce příkazu v rámci této metody. Přidejte jej do řetězce, aby váš kód nyní vypadal 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 zde uveden příkaz k získání tří definic lol s příklady bude vypadat takto:
urbanary-cli find lol -e -c 3
Nebo pomocí dlouhého tvaru každé možnosti:
urbanary-cli find lol --example --count 3
Překontrolovat Stránka velitele npm dozvědět se o něm více a jak přizpůsobit jeho funkce pro vaše různé případy použití.
Implementace funkcí programu
Nejprve importujte Axios do svého index.js soubor takto:
const axios = require('axios');
Poté v těle funkce akce's parametrem, můžete implementovat logiku pro odesílání požadavků do Urban Dictionary a zobrazování výsledků podle vašich možností.
Začněte tím, že definujete svůj požadavek:
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'
}
}
Poté proveďte požadavek na API pomocí Axios s následujícím kódem:
try {
let resp = await axios.request(requestOptions);
console.log(`Definitions for ${word} fetched`);
wordData = resp.data.list;
} catch (err) {
console.error(err.message)
}
Jediná vlastnost, kterou potřebujete z dat odpovědi, je seznam vlastnost, která obsahuje definice a příklady.
Stále v Snaž se bloku, přidejte tuto logiku pro zpracování voleb a zobrazení výsledků následovně:
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 příkazu pomocí příkazů if-else k určení způsobu zobrazení výstupu. Pokud příklad a počet volby jsou předány, iteruje se skrz wordData a vytiskne s nimi zadaný počet definic a příkladů.
Pokud projdete pouze počet, zobrazí toto množství definic bez příkladů. Pokud projdete pouze příklad, zobrazí jednu definici s ukázkovou větou. The jiný příkaz je výchozí chování pro tisk pouze definice, pokud nezadáte žádné možnosti.
Aplikace je nyní připravena, takže dalším krokem je učinit ji spustitelnou. Začněte přidáváním linie shebang na začátek vašeho souboru bin/index.js, abyste jej mohli spustit jako samostatný skript:
#!/usr/bin/env node
Dále otevřete svůj package.json soubor, upravte hodnotu hlavní vlastnost a přidejte a zásobník vlastnost po něm takto:
"main": "./bin/index.js",
"bin": {
"urbanary-cli": "./bin/index.js"
},
Klíč urbanary-cli, pod zásobník je příkaz, který zadáte do terminálu pro spuštění aplikace. Při sestavování aplikací příkazového řádku se tedy ujistěte, že tam používáte vhodný název.
Běh instalace npm -g globálně nainstalovat aplikaci a budete moci spustit aplikaci jako příkaz z vašeho terminálu.
Obrázek níže ukazuje proces instalace a testovací příkaz k nalezení významu lmk:
Můžete jej také publikovat do registru balíčků npm spuštěním npm zveřejnit v terminálu v adresáři projektu. Díky tomu jej může nainstalovat kdokoli odkudkoli instalace npm.
Sestavení a publikování aplikace pomocí Node.js je snazší, než když vy vytvářet CLI pomocí technologií jako Rust.
Vytvářejte funkční aplikace CLI pomocí Node.js
Ať už pracujete na balíčku npm a potřebujete nástroj CLI, který jej doprovází, nebo si jen chcete vytvořit nástroj pro zlepšení vašeho pracovního postupu jako vývojář. S balíčkem Node.js Commander máte vše, co potřebujete, abyste svůj nápad uvedli v život.
Můžete také jít dále pomocí jiných knihoven k vytvoření vylepšeného prostředí CLI pro vaše aplikace. Node.js je dostatečně robustní, aby sloužil vašim účelům bez velkých potíží.