Det kan være fordelagtigt at benytte npm pakken minimist, hvis der er brug for mere end de aller simpleste argumenter.
Det gør det langt nemmere at parse indholdet in i variabler, der kan benyttes i programmet.
Husk at installere minimist inden eksemplet køres, med kommandoen nmp install minimist
Yargs pakken
Er der brug for mere avanceret håndtering af argumenter på kommandolinjen, kan man benytte npm pakken yargs.
Det giver blandt andet mulighed for at tilknytte beskrivelser, typer og aliaser for de forskellige argumenter.
Her er et eksempel på håndtering af mere indviklede argumenter på kommandolinjen.
constyargs=require('yargs');
constargv=yargs .command('lyr', 'Tells whether an year is leap year or not', {
year: {
description:'the year to check for',
alias:'y',
type:'number',
}
})
.option('time', {
alias:'t',
description:'Tell the present Time',
type:'boolean',
})
.help()
.alias('help', 'h')
.argv;
if (argv.time) {
console.log('The current time is: ', new Date().toLocaleTimeString());
}
if (argv._.includes('lyr')) {
constyear=argv.year||new Date().getFullYear();
if (((year%4==0) && (year%100!=0)) || (year%400==0)) {
console.log(`${year} is a Leap Year`);
} else {
console.log(`${year} is NOT a Leap Year`);
}
}
console.log(argv);
For at kunne køre eksemplet kræver det at pakken yargs er installeret, hvilket kan gøres med kommandoen npm i yargs.
$ node cli-yargs-demo.js
{ _: [], '$0': 'cli-yargs-demo.js' }
$ node cli-yargs-demo.js -h
cli-yargs-demo.js [command]
Commands:
cli-yargs-demo.js lyr Tells whether an year is leap year or not
--version Show version number [boolean]
-t, --time Tell the present Time [boolean]
$ node cli-yargs-demo.js --version
1.0.0
$ node cli-yargs-demo.js --help lyr
cli-yargs-demo.js lyr
Options:
--version Show version number [boolean]
-t, --time Tell the present Time [boolean]
-h, --help Show help [boolean]
-y, --year the year to check for [number]
$ node cli-yargs-demo.js lyr
2021 is NOT a Leap Year
{ _: [ 'lyr' ], '$0': 'cli-yargs-demo.js' }
$ node cli-yargs-demo.js lyr --time
The current time is: 22.48.45
2021 is NOT a Leap Year
{ _: [ 'lyr' ], time: true, t: true, '$0': 'cli-yargs-demo.js' }
$ node cli-yargs-demo.js lyr --time -y 3000
The current time is: 22.48.59
3000 is NOT a Leap Year
{
_: [ 'lyr' ],
time: true,
t: true,
y: 3000,
year: 3000,
'$0': 'cli-yargs-demo.js'
}