1. Chalk#
Chalk is styling for the command line - add cool color and stuff.
1
2
3
4
5
6
7
8
9
10
11
|
const chalk = require('chalk');
const log = console.log;
log(chalk.blue('Hello') + ' World' + chalk.red('!'));
log(chalk.green(
'I am a green line ' +
chalk.blue.underline.bold('with a blue substring') +
' that becomes green again!'
));
|
2. Clear#
Clear the terminal screen if possible
1
2
|
var clear = require('clear');
clear();
|
3. Commander (minimist/nomnom/etc.)#
Argv on steroid - basically handle all the needs of of your cli parameters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
var program = require('commander');
program
.version('0.1.0')
.option('-p, --peppers', 'Add peppers')
.option('-P, --pineapple', 'Add pineapple')
.option('-b, --bbq-sauce', 'Add bbq sauce')
.option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
.parse(process.argv);
console.log('you ordered a pizza with:');
if (program.peppers) console.log(' - peppers');
if (program.pineapple) console.log(' - pineapple');
if (program.bbqSauce) console.log(' - bbq');
console.log(' - %s cheese', program.cheese);
|
Commander is probably the most popular (at least if measured in Github stars) but it is not the only one around.
minimist is also a widly used argument parser for command line stuff.
Also worth mentioning: yargs the pirate theme parser
clui#
Clui is UI for command lines
Draw spinners, progress bars, etc.
Example:
1
2
3
4
|
var Sparkline = require('clui').Sparkline;
var reqsPerSec = [10,12,3,7,12,9,23,10,9,19,16,18,12,12];
console.log(Sparkline(reqsPerSec, 'reqs/sec'));
|
for the following result:
Figlet#
Figlet creates ASCII art from text
1
2
3
4
5
6
7
8
9
10
|
var figlet = require('figlet');
figlet('Hello World!!', function(err, data) {
if (err) {
console.log('Something went wrong...');
console.dir(err);
return;
}
console.log(data)
});
|
inquirer#
inquirer Handle user interaction:
- asking questions
- parsing input
- validating answers
- etc.
General structure :
1
2
3
4
5
6
7
8
|
var inquirer = require('inquirer');
inquirer
.prompt([
/* Pass your questions in here */
])
.then(answers => {
// Use user feedback for... whatever!!
});
|
Allow you to create some prompts like this one ;
1
2
3
4
5
6
|
[?] What do you want to do?
> Order a pizza
Make a reservation
--------
Ask opening hours
Talk to the receptionist
|
Configstore#
Configstore is a configuration manager for your cli.
(It has a companion package [electron-store](https://github.com/sindresorhus/electron-store for Electron apps))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
const Configstore = require('configstore');
const packageJson = require('./package.json');
// Create a Configstore instance
const config = new Configstore(packageJson.name, {foo: 'bar'});
console.log(config.get('foo'));
//=> 'bar'
config.set('awesome', true);
console.log(config.get('awesome'));
//=> true
// Use dot-notation to access nested properties
config.set('bar.baz', true);
console.log(config.get('bar'));
//=> {baz: true}
config.delete('awesome');
console.log(config.get('awesome'));
//=> undefined
|