Node.js formatted console output
Two new(1) built in methods String.Prototype.padStart and String.Prototype.padEnd were introduced in ES2017 (ES8) which perform the required padding functions.
(1) node >= 8.2.1 (or >= 7.5.0 if run with the --harmony flag)
Examples from the mdn page:
'abc'.padStart(10); // " abc"'abc'.padStart(10, "foo"); // "foofoofabc"'abc'.padStart(6,"123465"); // "123abc"'abc'.padStart(8, "0"); // "00000abc"'abc'.padStart(1); // "abc" 'abc'.padEnd(10); // "abc "'abc'.padEnd(10, "foo"); // "abcfoofoof"'abc'.padEnd(6, "123456"); // "abc123"'abc'.padEnd(1); // "abc"
For indenting a json onto the console try using JSON.stringify. The third parameter provides the indention required.
JSON.stringify({ a:1, b:2, c:3 }, null, 4);// {// "a": 1,// "b": 2,// "c": 3// }
There's nothing built into NodeJS to do this. The "closest" you'd come is util.format
, which still doesn't do much unfortunately (reference).
You'll need to look into other modules to provide a richer formatting experience. For example: sprintf.
Sprintf-js allows both positional (0, 1, 2) arguments and named arguments.
A few examples of padding and alignment:
var sprintf=require("sprintf-js").sprintf;console.log(sprintf("Space Padded => %10.2f", 123.4567));console.log(sprintf(" _ Padded => %'_10.2f", 123.4567));console.log(sprintf(" 0 Padded => %010.2f", 123.4567));console.log(sprintf(" Left align => %-10.2f", 123.4567));
Results:
Space Padded => 123.46 _ Padded => ____123.46 0 Padded => 0000123.46 Left align => 123.46
If the data is tabular, then the simplest way would be to do it with console.table
This is the code.
console.table( COMMANDS.map(command => { return { "Long Option": command.long_option, "Short Option": command.short_option, Description: command.description }; }));
You don't need external libraries for it.Here is sample output. You only need to pass an array object.
Not only in Nodejs, but it also works in chrome.
https://developer.mozilla.org/en-US/docs/Web/API/Console/table