Ismerje meg, hogyan készíthet programot szabványos parancssori felülettel ennek a hasznos könyvtárnak a használatával.

A CLI (Command Line Interface) alkalmazások leegyszerűsített szövegalapú alkalmazások, amelyek a terminálon futnak meghatározott feladatok elvégzésére. A CLI alkalmazások szinte minden fejlesztő és informatikai szakember munkafolyamatában döntő szerepet játszanak.

Ezek többnyire olyan segédeszközök, amelyek kölcsönhatásba lépnek az operációs rendszerrel vagy alkalmazásokkal helyben telepítve vagy az interneten keresztül elérhető egy feladat végrehajtásához a felhasználó által megadott adatoknak megfelelően, és irányelveket.

A CLI alkalmazások megértése

A parancssori felület lehetővé teszi a programokkal való interakciót szövegsorok beírásával. Sok CLI program eltérően fut az indításhoz használt parancstól függően.

Például, az ls program fájlinformációkat jelenít meg és a könyvtárak tartalma. Így futtathatod:

ls -l /home

Ez a parancs a következőket tartalmazza:

  • A program neve: ls.
  • instagram viewer
  • Egy opció (vagy zászló). Ebben az esetben, -l egy olyan opció, amely a "hosszú" rövidítése, és részletesebb információkat szolgáltat.
  • Egy veszekedés, /home. Itt az argumentum megadja a könyvtár elérési útját az információk megjelenítéséhez.

Bár minden program definiálhat saját parancssori felületet, bizonyos elemek általánosak és széles körben használatosak. Kövesse ezeket a szabványokat, hogy valaki, aki ismeri a parancssori felületet, könnyen tudja használni a programjait.

Mi az a Commander.js?

A Commander.js az egy csomag, amely lehetővé teszi CLI-alkalmazások létrehozását a Node.js-ben. Funkciók gazdag könyvtárával rendelkezik, amelyek segítségével szabványos CLI-alkalmazásokat készíthet, és elvégzi a nehéz munka nagy részét. Csak parancsokat, beállításokat és funkciókat kell megadnia a CLI-alkalmazáshoz.

Más csomagokkal, például a stílusozáshoz a Chalk.js-szel kombinálva gyorsan létrehozhat egy teljesen működőképes CLI-alkalmazást a Node.js-ben.

CLI-alkalmazás létrehozása Node.js-ben a Commander.js használatával

Vegyünk egy példa CLI alkalmazást, városi-cli, amely a szavak jelentését és a közösségimédia-rövidítéseket innen nézi ki a Városi szótár. Megtanulja, hogyan hozhatja létre a CLI-t, és hogyan teheti közzé npm csomag-nyilvántartást, hogy mások telepíthessék.

Hozzon létre egy új mappát, és inicializáljon egy új Node.js projektet a következő parancsokkal:

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

Ez a CLI fogja használni Axios HTTP kérések küldésére az Urban Dictionary API-hoz. Te tudod használni Rapid API a végpontok ellenőrzéséhez és a hitelesítő adatok megtekintéséhez.

Egy egyszerű parancssori felület alparanccsal és súgóval

A CLI felépítésének megkezdéséhez telepítse a Commander és az Axios alkalmazást a következő paranccsal:

npm install commander axios

Hozzon létre egy új mappát, kuka, a projektkönyvtárban, és egy új üres fájlt, index.js:

mkdir bin
cd bin
touch index.js

A kuka (a "bináris" rövidítése) mappa fontos, mert ez tartalmazza a belépési pont fájlt, amelyet a Node hív meg a CLI futtatásakor. A index.js fájl ez a belépési pont fájl. Most szerkessze az index.js fájlt, és kezdje el létrehozni a parancssori felületet a Commander.js API-val.

Először importálja a program objektum a parancsnoktól:

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

Használja a program objektumot a program felületének meghatározásához, beleértve az alparancsokat, opciókat és argumentumokat. Az objektum mindegyikhez rendelkezik megfelelő metódusokkal; például egy alparancs definiálásához használja a parancs módszer.

Határozza meg a megtalálja alparancs a CLI számára, hogy kikeresse a szavakat az Urban Dictionary-ból, és az alábbi kód segítségével hozzáírja a leírást:

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

Ez regisztrálja a megtalálja parancsot, amely egy szót és leírást vár utána. A szögletes zárójelek használata azt jelenti, hogy a szó kötelező argumentum; használj helyette szögletes zárójelet ([]), hogy opcionális legyen.

Adjon hozzá egy leírást, mert a Commander.js azt használja a súgószöveg létrehozásához. Amikor az alkalmazást a Segítség parancsot, akkor kap egy szabványos használati útmutatót.

Ennek teszteléséhez adja hozzá a következőket:

program.parse()

Ezután futtassa a programot, és adja át a Segítség parancsot az alábbi kimenet lekéréséhez:

Így minden szabványos CLI-alkalmazás megjeleníti a segítségét a felhasználóknak, és a Commanderrel nem kell aggódnia, hogy saját maga hozza létre. A -h és --Segítség Az opciók hasznosak a parancs használati útmutatójának ellenőrzéséhez.

Lehetőségek meghatározása és a végleges program elkészítése

A lánc láncolásával is megadhat egy opciót választási lehetőség módszert a parancsdefinícióhoz.

A következőképpen definiálhat egy lehetőséget, hogy példákat is belefoglalhasson a szavak definíciójába:

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

És a következőképpen definiálhat egy opciót, amely megadja a visszaadandó definíciók számát:

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

A választási lehetőség metódus két karakterlánc-paramétert fogad el, az egyiket az opció nevéhez (rövid és hosszú formák), a másikat pedig a leírásához. Az extra [összeg] érv a számol Az opció a megjelenítendő definíciók számának értéke.

Most az utolsó hozzáadandó módszer a akció módszer. Meg fogod valósítani a megtalálja parancs funkcióit ezen a módszeren belül. Adja hozzá a lánchoz, hogy a kód most így nézzen ki:

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

Ezzel a beállítással három definíciót kaphat a parancsból lol példákkal így fog kinézni:

urbanary-cli find lol -e -c 3

Vagy használja az egyes opciók hosszú alakját:

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

Nézze meg A parancsnok npm oldala hogy többet megtudjon róla, és hogyan igazíthatja funkcióit a különböző használati esetekhez.

A program funkcióinak megvalósítása

Először is importálja az Axiókat a sajátjába index.js fájl a következőképpen:

const axios = require('axios');

Ezután a függvény törzsében akcióparaméterével megvalósíthatja azt a logikát, hogy kéréseket küldjön az Urban Dictionary számára, és megjelenítse az eredményeket a lehetőségek szerint.

Kezdje kérésének meghatározásával:

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

Ezután küldje el a kérést az API-nak az Axios használatával a következő kóddal:

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

Az egyetlen tulajdonság, amire szüksége van a válaszadatokból, az lista definíciókat és példákat tartalmazó tulajdonság.

Még mindig a próbáld ki blokkot, adja hozzá ezt a logikát az opciók kezeléséhez és az eredmények megjelenítéséhez az alábbiak szerint:

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

Ez a kód if-else utasítások segítségével értékeli ki a parancs argumentumait a kimenet megjelenítésének meghatározásához. Ha a példa és számol opciók átadásra kerül, ismétlődik wordData és kiírja velük a megadott számú definíciót és példát.

Ha csak passzol számol, akkora mennyiségű definíciót jelenít meg példák nélkül. Ha csak passzol példa, egy definíciót jelenít meg egy példamondattal. A más utasítás az alapértelmezett viselkedés, amely csak a definíciót nyomtatja ki, ha nem ad át semmilyen beállítást.

Az alkalmazás készen áll, így a következő lépés a futtathatóvá tétel. Kezdje a hozzáadással egy shebang vonal a bin/index.js fájl elejére, hogy önálló szkriptként futtathassa:

#!/usr/bin/env node

Ezután nyissa meg a sajátját package.json fájlt, módosítsa az értékét fő- tulajdonságot, és add hozzá a kuka tulajdonság utána így:

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

A kulcs városi-cli, alatt kuka az a parancs, amelyet be kell írnia a terminálba az alkalmazás futtatásához. Ezért ügyeljen arra, hogy megfelelő nevet használjon a parancssori alkalmazások létrehozásakor.

Fuss npm telepítés -g az alkalmazás globális telepítéséhez, és parancsként futtathatja az alkalmazást a termináljáról.

Az alábbi kép a telepítési folyamatot és egy tesztparancsot mutatja a jelentés jelentésének megtalálásához lmk:

A futtatással közzéteheti az npm csomag-nyilvántartásban is npm közzé a terminálban a projektkönyvtárban. Így bárki, bárhonnan telepítheti npm telepítés.

A Node.js segítségével egyszerűbb összeállítani és közzétenni az alkalmazást, mint amikor Ön CLI-ket készíteni olyan technológiákkal, mint a Rust.

Funkcionális CLI-alkalmazások létrehozása a Node.js segítségével

Akár egy npm-csomagon dolgozik, és szükség van hozzá egy CLI-segédprogramra, akár csak olyan eszközt szeretne készíteni, amellyel fejlesztőként javíthatja munkafolyamatait. A Node.js Commander csomaggal minden megvan ahhoz, hogy ötletét életre keltse.

Más könyvtárak használatával tovább is léphet, hogy javított CLI-élményt hozzon létre alkalmazásaihoz. A Node.js elég robusztus ahhoz, hogy gond nélkül szolgálja céljait.