npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@adoyle.me/prettyoutput

v1.3.2

Published

Librarie to format js/json objects into a YAML-style colored output. Especially useful to pretty print logs. Performant (benchmarks)

Downloads

18

Readme

prettyoutput NPM version build status Test coverage

Library to format js/json object into YAML style readable output. It's performance centric to be used as a logger formatter. It's currently 3 to 5 times quicker than util.inspect used by many loggers. It's available as a NodeJS library or a cli too.

Credits

This is based on the great work done on the project prettyjson

How to install

Via NPM:

$ npm install prettyoutput

Using it

It's pretty easy to use. Just have include it in your script and call it:

const prettyoutput = require('prettyoutput')

const data = {
  username: 'kic',
  url: 'https://github.com/keepitcool',
  projects: ['prettyoutput', '3m2tuio']
}

console.log(prettyoutput(data))

Output:

Example

API

const prettyoutput = require('prettyoutput')
prettyoutput(data, options, indent)

Parameters are :

  • {*} data : js or json object
  • {Object} [options] : Optional. See options below
  • {number} [indent] : Optional. Indent all output

Options are :

  • {number} [indentationLength] : Length of indentation (in terms of space)
  • {number} [maxDepth] : maximum sublevel of nested objects/arrays to output. Default: 3
  • {boolean} [noColor] : disable colors. Default: false
  • {colors} [colors] : Output colors. See below
  • {boolean} [alignKeyValues] : Align key values. Default: true
  • {boolean} [emptyArrayMsg] : Rendered message on empty array. Default: '(empty array)'
  • {boolean} [emptyObjectMsg] : Rendered message on empty object. Default: '(empty object)'

Colors are :

  • {string} [keys] : Objects keys color. Default: green
  • {string} [dash] : Array prefixing dash ("- "). Default: green
  • {string} [number] : Numbers color. Default: blue
  • {string} [string] : Strings color. Default: no color
  • {string} [true] : Boolean value 'true' color. Default: green
  • {string} [false] : Boolean value 'false' color. Default: red
  • {string} [null] : 'Null' color. Default: grey
  • {string} [undefined] : 'Undefined' color. Default: grey

Example using options :

const prettyoutput = require('prettyoutput')

const data = {
  username: 'kic',
  url: 'https://github.com/keepitcool',
  projects: ['prettyoutput', '3m2tuio']
}

const colors = {
  keys: 'blue',
  'null': 'red'
}

const options = {
  noColor: true,
  maxDepth: 5,
  colors: colors
};

console.log(prettyoutput(data, options, 2);

Cli usage

Command line tool support file param or stdin.

Usage:

$ prettyoutput package.json

This should output : Example

Command line options

It's possible to customize the output through some command line options:

# Indent 4, max depth 5, disable colors
$ prettyjson --indent=4 --depth=5 --noColor package.json

or

# Indent 4, max depth 5, disable colors
$ cat package.json | prettyjson --indent=4 --depth=5 --noColor

Benchmark

Project target logging, so performance is an issue. Currently, prettyoutput is 3 times quicker than util.inspect and 2.5 times quicker than prettyjson, the library it's inspired from.

To run benchmark, just run :

$ node benchmark/benchmark.js

Results :

LEVELS | KEYS | LOOPS | WEIGTHS
3      | 20   | 100   | serializable: 0.9    array: 0.3    object: 0.5    multilineString: 0.3    error: 0.2

NAME         | MIN                 | MAX                 | MEAN                | TOTAL
prettyoutput | 3 ms 133 µs 526 ns  | 42 ms 563 µs 146 ns | 4 ms 365 µs 617 ns  | 436 ms 561 µs 716 ns
prettyjson   | 9 ms 615 µs 703 ns  | 21 ms 441 µs 595 ns | 11 ms 447 µs 83 ns  | 1 s 144 ms 708 µs 348 ns
util.inspect | 10 ms 839 µs 974 ns | 24 ms 332 µs 545 ns | 12 ms 526 µs 168 ns | 1 s 252 ms 616 µs 884 ns


LEVELS | KEYS | LOOPS | WEIGTHS
4      | 20   | 100   | serializable: 0.9    array: 0.3    object: 0.5    multilineString: 0.3    error: 0.2

NAME         | MIN                 | MAX                  | MEAN                 | TOTAL
prettyoutput | 29 ms 966 µs 837 ns | 102 ms 170 µs 779 ns | 39 ms 502 µs 799 ns  | 3 s 950 ms 279 µs 972 ns
prettyjson   | 86 ms 731 µs 622 ns | 159 ms 166 µs 633 ns | 107 ms 813 µs 674 ns | 10 s 781 ms 367 µs 439 ns
util.inspect | 90 ms 942 µs 290 ns | 256 ms 995 µs 418 ns | 118 ms 794 µs 343 ns | 11 s 879 ms 434 µs 322 ns


LEVELS | KEYS | LOOPS | WEIGTHS
5      | 20   | 100   | serializable: 0.9    array: 0.3    object: 0.5    multilineString: 0.3    error: 0.2

NAME         | MIN                      | MAX                      | MEAN                     | TOTAL
prettyoutput | 616 ms 495 µs 243 ns     | 1 s 602 ms 965 µs 211 ns | 768 ms 761 µs 315 ns     | 76 s 876 ms 131 µs 544 ns
prettyjson   | 1 s 294 ms 734 µs 939 ns | 1 s 686 ms 600 µs 593 ns | 1 s 490 ms 394 µs 707 ns | 149 s 39 ms 470 µs 777 ns
util.inspect | 1 s 623 ms 160 µs 631 ns | 2 s 460 ms 983 µs 994 ns | 1 s 731 ms 699 µs 847 ns | 173 s 169 ms 984 µs 758 ns

Running Tests

To run the test suite first invoke the following command within the repo, installing the development dependencies:

$ npm install

then run the tests:

$ npm test