Yargs: una utility per gestire l'interfaccia a linea di comando.

Yargs: una utility per gestire l'interfaccia a linea di comando.

Con l'installazione di yargs avremo a disposizione una libreria per il parsing e la gestione avanzata degli argomenti da riga di comando.

indice

Come installare yargs da terminale

npm i yargs

Come importare yargs nella nostra app.

const argv_parsed = require('yargs').argv;

Funzionamento Basilare di Yargs

Proviamo a lanciare da terminale un comando con flag-- nome e valore Donato

node app.js cerca --nome='Donato'
yargs restituisce un oggetto con proprietà _ con al suo interno un'array con il comando indicato, la proprietà passata ed il valore.
Restituzione di yargs

Possiamo quindi vedere che yargs ci restituisce un oggetto contenente

  • Una proprietà _
  • Un array con al suo interno i comandi lanciati (in questo caso cerca)
  • Una proprietà chiave (in questo caso nome)
  • Un valore (in questo caso Donato)

Accesso alle proprietà ed ai comandi con yargs

const argv_parsed = require('yargs').argv;

console.log(argv_parsed); // per ottenere l'oggetto _ con l'array contenente i comandi, le proprietà chiave ed i propri valori
console.log(argv_parsed._); // per ottenere i comandi indicati
console.log(argv_parsed.nome); // per accedere al flag nome
console.log(argv_parsed.email); // per accedere al flag nome
Yargs accesso alle proprietà
Yargs accesso alle proprietà

Il metodo command di yargs

Per assicurarci di controllare che siano presenti flag specifici per comandi specifici, possiamo usare il metodo command di yargs, con esso infatti potremmo descrivere il comando ed i flag che ci aspettiamo di ricevere. Facciamo un esempio:

const yargs = require('yargs');

// node app.js get -- nome='Donato'

yargs.command({
    command: 'get',
    describe: 'Ricerca per nome',
    builder: {
        nome: {
            describe: 'nome da ricercare',
            demandOption: true,
            type: 'string'
        }
    },
    handler(argv) {
        console.log(argv);
    }
});
yargs.parse();

Come abbiamo specificato che al comando get, corrisponda il flag nome?

  • A command() dobbiamo passare in input un oggetto.
  • L'oggetto dovrà contenere 4 proprietà:
    • command : nome del comando
    • describe: descrive il comando
    • builder : {contiene a sua volta un oggetto che conterrà a sua volta i flag che ci aspettiamo quando viene lanciato il command appena descritto}
      • flag : nome del flag
        • describe : descrizione del flag
        • demandOption : true (per indicare che obbligatorio), false (non obbligatorio)
        • type : la tipologia del flag, ad esempio 'string'
    • handler(argv): questa funzione conterrà al suo interno l'oggetto argv di yargs.
  • yargs.parse() : Con questa funzione abiliamo yargs con il metodo parse()

Risultato:

metodo command di yargs in funzione
metodo command di yargs in funzione

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2022
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram