Научите како да направите програм са стандардним интерфејсом командне линије користећи ову корисну библиотеку.

ЦЛИ (Интерфејс командне линије) апликације су поједностављене апликације засноване на тексту које се покрећу у терминалу ради извршавања одређених задатака. ЦЛИ апликације играју кључну улогу у току рада скоро сваког програмера и ИТ професионалца.

То су углавном помоћни алати који су у интеракцији са оперативним системом или апликацијама које су то и друге инсталиран локално или доступан преко интернета за обављање задатка према уносу корисника и директиве.

Разумевање ЦЛИ апликација

Интерфејс командне линије омогућава интеракцију са програмом куцањем редова текста. Многи ЦЛИ програми раде различито у зависности од команде коју користите да бисте их покренули.

На пример, програм лс приказује информације о датотеци и садржај именика. Можете га покренути овако:

ls -l /home

Ова команда укључује:

  • Назив програма: лс.
  • Опција (или застава). У овом случају, је опција која је скраћеница од "дуго" и даје детаљније информације.
  • Аргумент, /home. Овде аргумент специфицира путању до директоријума за приказ информација.

Иако сваки програм може да дефинише сопствени интерфејс командне линије, одређени елементи су уобичајени и у широкој употреби. Требало би да пратите ове стандарде како би неко ко је упознат са интерфејсом командне линије могао лако да користи ваше програме.

Шта је Цоммандер.јс?

Цоммандер.јс је пакет који вам омогућава да направите ЦЛИ апликације у Ноде.јс. Има богату библиотеку функција које вам омогућавају да направите стандардну ЦЛИ апликацију, обављајући велики део тешког посла. Морате само да дефинишете команде, опције и функционалност за своју ЦЛИ апликацију.

Комбинујући га са другим пакетима као што је Цхалк.јс за стилизовање, можете брзо да креирате потпуно функционалну ЦЛИ апликацију у Ноде.јс.

Прављење ЦЛИ апликације у Ноде.јс помоћу Цоммандер.јс

Размотрите пример ЦЛИ апликације, урбанари-цли, који тражи значење речи и скраћеница друштвених медија из Урбан Дицтионари. Научићете како да креирате ЦЛИ и објавите га на нпм регистар пакета тако да други могу да га инсталирају.

Креирајте нову фасциклу и иницијализујте нови Ноде.јс пројекат следећим командама:

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

Овај ЦЛИ ће користити Акиос за слање ХТТП захтева на АПИ Урбан Дицтионари. Можете користити Рапид АПИ да проверите крајње тачке и прегледате акредитиве.

Једноставан ЦЛИ са подкомандом и помоћи

Да бисте почели да правите свој ЦЛИ, инсталирајте Цоммандер и Акиос са следећом командом:

npm install commander axios

Креирате нову фасциклу, бин, у директоријуму вашег пројекта и нову празну датотеку, индек.јс:

mkdir bin
cd bin
touch index.js

Тхе бин (скраћено од "бинари") фасцикла је важна јер садржи датотеку улазне тачке коју Ноде позива када покренете свој ЦЛИ. Тхе индек.јс датотека је ова улазна тачка датотеке. Сада уредите датотеку индек.јс и почните да правите свој ЦЛИ помоћу Цоммандер.јс АПИ-ја.

Прво увезите програм објекат од команданта:

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

Користићете програм објекат за дефинисање интерфејса вашег програма, укључујући подкоманде, опције и аргументе. Објекат има одговарајуће методе за сваку од њих; на пример, да дефинишете подкоманду, користите команда методом.

Дефинишите а наћи подкоманда за ЦЛИ да пронађе речи из Урбан Дицтионари-а и дода опис за њега користећи код испод:

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

Ово региструје а наћи команду, која очекује реч после ње и опис за њу. Употреба угаоних заграда означава да је реч обавезан аргумент; уместо тога користите угласте заграде ([]) да буде опционо.

Требало би да додате опис јер га Цоммандер.јс користи за генерисање текста помоћи. Када покренете апликацију са помоћ команду, добићете стандардни водич за употребу.

Да бисте ово тестирали, додајте следеће:

program.parse()

Затим покрените програм и проследите га помоћ команду да бисте добили излаз испод:

Овако ће свака стандардна ЦЛИ апликација приказати своју помоћ корисницима и, уз Цоммандер, не морате да бринете о томе да је сами креирате. Тхе и --помоћ опције су корисне за проверу упутства за употребу команде.

Дефинисање опција и припрема финалног програма

Опцију такође дефинишете уланчавањем опција метод за дефиницију команде.

Ево како да дефинишете опцију за укључивање примера у дефиниције речи:

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

А ево како да дефинишете опцију која наводи број дефиниција које треба вратити:

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

Тхе опција метода прихвата два параметра стринга, један за назив опције (и кратки и дуги облици), а други за њен опис. Додатак [износ] аргумент у цоунт опција је вредност за број дефиниција за приказ.

Сада, последњи метод за додавање је поступак методом. Ви ћете имплементирати наћи функционалност команде у оквиру овог метода. Додајте га у ланац тако да ваш код сада изгледа овако:

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

Са овим подешавањем, ево која команда треба да добијете три дефиниције лол са примерима ће изгледати овако:

urbanary-cli find lol -e -c 3

Или, користећи дугачку форму сваке опције:

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

Провери Командантова нпм страница да сазнате више о томе и како да прилагодите његове функције за различите случајеве употребе.

Спровођење функционалности програма

Прво увезите Акиос у свој индек.јс фајл на следећи начин:

const axios = require('axios');

Затим, у телу функције поступак’, можете имплементирати логику за упућивање захтева у Урбан Дицтионари и приказивање резултата према вашим опцијама.

Почните тако што ћете дефинисати свој захтев:

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

Затим упутите захтев АПИ-ју користећи Акиос са следећим кодом:

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

Једино својство које вам треба од података одговора је листа својство које садржи дефиниције и примере.

Још увек у покушати блок, додајте ову логику за управљање опцијама и прикажите резултате на следећи начин:

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

Овај код процењује аргументе команде користећи иф-елсе изразе да би одредио како да се прикаже излаз. Ако је пример и цоунт опције се прослеђују, понавља се вордДата и исписује наведени број дефиниција и примера са њима.

Ако прођете само цоунт, приказује ту количину дефиниција без примера. Ако прођете само пример, приказује једну дефиницију са примером реченице. Тхе друго изјава је подразумевано понашање за штампање само дефиниције ако не проследите ниједну опцију.

Апликација је сада спремна, тако да је следећи корак да је учините извршном. Почните додавањем схебанг линија на почетак ваше бин/индек.јс датотеке тако да можете да је покренете као самосталну скрипту:

#!/usr/bin/env node

Затим отворите свој пацкаге.јсон датотеку, уредите вредност главни својство и додајте а бин својство после њега овако:

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

Кључ урбанари-цли, испод бин је команда коју ћете унети у свој терминал да бисте покренули своју апликацију. Дакле, обавезно користите одговарајуће име када правите своје апликације на командној линији.

Трцати нпм инсталл -г да инсталирате апликацију глобално и моћи ћете да извршите апликацију као команду са свог терминала.

Слика испод приказује процес инсталације и тест команду за проналажење значења лмк:

Такође можете да га објавите у регистру нпм пакета покретањем нпм публисх у терминалу унутар директоријума пројекта. Ово чини да га може инсталирати било ко са било ког места нпм инсталл.

Лакше је изградити и објавити своју апликацију са Ноде.јс у поређењу са вашим изградити ЦЛИ са технологијама као што је Руст.

Изградите функционалне ЦЛИ апликације са Ноде.јс

Било да радите на нпм пакету и да вам је потребан ЦЛИ услужни програм који ће га пратити, или само желите да направите алат за побољшање тока рада као програмера. Имате све што вам је потребно да своју идеју оживите уз Ноде.јс Цоммандер пакет.

Такође можете ићи даље коришћењем других библиотека да бисте креирали побољшана ЦЛИ искуства за ваше апликације, Ноде.јс је довољно робустан да служи вашим сврхама без много муке.