Com crear una aplicació CLI a Node.js

Com crear una aplicació CLI a Node.js
Lectors com tu ajuden a donar suport a MUO. Quan feu una compra mitjançant enllaços al nostre lloc, podem guanyar una comissió d'afiliats. Llegeix més.

Les aplicacions CLI (Command Line Interface) són aplicacions simplistes basades en text que s'executen al terminal per completar tasques específiques. Les aplicacions CLI tenen un paper crucial en el flux de treball de gairebé tots els desenvolupadors i professionals de TI.





Principalment són eines d'utilitat que interactuen amb el sistema operatiu o aplicacions que s'instal·len localment o estan disponibles a Internet per dur a terme una tasca segons l'entrada i les directrius de l'usuari.





Entendre les aplicacions CLI

Una interfície de línia d'ordres us permet interactuar amb un programa escrivint línies de text. Molts programes CLI s'executen de manera diferent segons l'ordre que utilitzeu per iniciar-los.





Per exemple, el programa ls mostra la informació del fitxer i el contingut dels directoris. Podeu executar-lo així:

 ls -l /home

Aquesta comanda inclou:



  • Nom del programa: ls .
  • Una opció (o bandera). En aquest cas, -l és una opció que és l'abreviatura de 'llarg' i produeix informació més detallada.
  • Un argument, /casa . Aquí, l'argument especifica una ruta al directori per mostrar informació.

Tot i que cada programa pot definir la seva pròpia interfície de línia d'ordres, alguns elements són comuns i s'utilitzen àmpliament. Heu de seguir aquests estàndards perquè algú que estigui familiaritzat amb una interfície de línia d'ordres pugui utilitzar els vostres programes fàcilment.

millor navegador per a Windows XP 2018

Què és Commander.js?

Commander.js és un paquet que us permet crear aplicacions CLI a Node.js . Té una rica biblioteca de funcions que us permeten crear una aplicació CLI estàndard, realitzant gran part del treball pesat. Només heu de definir ordres, opcions i funcionalitats per a la vostra aplicació CLI.





Combinant-lo amb altres paquets com ara Chalk.js per a l'estil, podeu crear ràpidament una aplicació CLI totalment funcional a Node.js.

Creació d'una aplicació CLI a Node.js mitjançant Commander.js

Penseu en un exemple d'aplicació CLI, urbanary-cli, que cerca el significat de les paraules i les abreviatures de les xarxes socials el Diccionari Urbà . Aprendràs a crear la CLI i publicar-la a npm registre de paquets perquè altres puguin instal·lar-lo.





Creeu una carpeta nova i inicialitzeu un nou projecte Node.js amb les ordres següents:

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

Aquesta CLI utilitzarà Axios per enviar sol·licituds HTTP a l'API del diccionari urbà. Pots fer servir API ràpida per comprovar els punts finals i veure les credencials.

  Captura de pantalla de l'API Urban Dictionary's page on Rapid API show user API credentials

Una CLI senzilla amb una subordre i ajuda

Per començar a crear la vostra CLI, instal·leu Commander i Axios amb l'ordre següent:

 npm install commander axios 

Crea una carpeta nova, paperera , al directori del vostre projecte i un nou fitxer buit, index.js :

 mkdir bin 
cd bin
touch index.js

El paperera (abreviatura de 'binari') és important perquè conté el fitxer de punt d'entrada que el Node crida quan executeu la vostra CLI. El index.js fitxer és aquest fitxer de punt d'entrada. Ara, editeu el fitxer index.js i comenceu a crear la vostra CLI amb l'API Commander.js.

Primer, importeu el programa objecte del comandant:

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

Fareu servir el programa objecte per definir la interfície del vostre programa, incloses les subordres, les opcions i els arguments. L'objecte té els mètodes corresponents per a cadascun d'aquests; per exemple, per definir una subordre, utilitzeu el comandament mètode.

Definiu a trobar subordre per a la CLI per cercar paraules des del diccionari urbà i afegir-ne una descripció utilitzant el codi següent:

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

Això registra a trobar comanda, que espera una paraula després d'ella i una descripció. L'ús de claudàtors angulars significa que la paraula és un argument obligatori; feu servir claudàtors en lloc d'això ( [] ) perquè sigui opcional.

com desfer-se del skype per a empreses

Hauríeu d'afegir una descripció perquè Commander.js l'utilitza per generar text d'ajuda. Quan executeu l'aplicació amb el ajuda comanda, obtindreu una guia d'ús estàndard.

Per provar-ho, afegiu el següent:

envia i rep missatges de text de manera gratuïta en línia
 program.parse()

A continuació, executeu el programa i passeu-lo ajuda comanda per obtenir la sortida següent:

  Captura de pantalla que mostra la sortida de l'execució de l'ordre d'ajuda

Així és com qualsevol aplicació CLI estàndard mostrarà la seva ajuda als usuaris i, amb Commander, no us haureu de preocupar de crear-la vosaltres mateixos. El -h i --ajuda les opcions són útils per comprovar la guia d'ús d'una ordre.

Definició d'Opcions i Preparació del Programa Final

També definiu una opció encadenant el opció mètode a la definició de l'ordre.

A continuació s'explica com definir una opció per incloure exemples a les definicions de paraules:

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

I aquí s'explica com definir una opció que especifiqui el nombre de definicions a retornar:

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

El opció El mètode accepta dos paràmetres de cadena, un per al nom de l'opció (tant en forma curta com llarga) i l'altre per a la seva descripció. L'extra [import] argument en el comptar opció és el valor del nombre de definicions que s'han de mostrar.

Ara, l'últim mètode per afegir és el acció mètode. Implementareu el trobar funcionalitat de l'ordre dins d'aquest mètode. Afegiu-lo a la cadena perquè ara el vostre codi tingui aquest aspecte:

 program 
    .command('find <word>')
    .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) => {});

Amb aquesta configuració, aquí teniu una ordre per obtenir tres definicions lol amb exemples semblarà:

 urbanary-cli find lol -e -c 3 

O, utilitzant la forma llarga de cada opció:

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