howfat icon indicating copy to clipboard operation
howfat copied to clipboard

Shows how fat is a package

howfat

Build Status NPM version

Shows how fat is a package together with its dependencies

howfat

Usage

Simple

npx howfat mkdirp

Specified version or version range:

npx howfat mkdirp@^0.5.0

Local packages

cd my-project
npx howfat

npx howfat ../my-other-package

Git or github

npx howfat https://github.com/substack/node-mkdirp

npx howfat ssh://[email protected]:substack/node-mkdirp.git#0.3.4

Different reporters

Show all dependencies as a tree:

$ npx howfat -r tree mkdirp
[email protected] (1 dep, 41.49kb, 37 files)
╰── [email protected] (20.78kb, 14 files)

as a table:

$ npx howfat -r table mkdirp
[email protected] (1 dep, 41.49kb, 37 files)
╭────────────────┬──────────────┬─────────┬───────╮
│ Name           │ Dependencies │    Size │ Files │
├────────────────┼──────────────┼─────────┼───────┤
│ [email protected] │            0 │ 20.78kb │    14 │
╰────────────────┴──────────────┴─────────┴───────╯

Other options

  -d, --dev-dependencies BOOLEAN   Fetch dev dependencies, default false
  -p, --peer-dependencies BOOLEAN  Fetch peer dependencies, default false
  
  -r, --reporter STRING            'default', 'table', 'tree'
  -v, --verbose BOOLEAN            Show additional logs
      --no-colors BOOLEAN          Prevent color output
      --no-human-readable BOOLEAN  Show size in bytes 
  
  --http                           Node.js RequestOptions, like:
  --http.timeout NUMBER            Request timeout in ms, default 10000
  --http.connection-limit NUMBER   Max simultaneous connections, default 10
  --http.retry-count NUMBER        Try to fetch again of failure, default 5

Accuracy

Different package managers use different dependency resolution algorithms. Even different versions of the same manager will resolve different dependency tree. So, this package tries to calculate stats similar to npm, but keep in mind that it provides approximate results.

Why should I care about my package size?

  • Small package is installed much faster on CI
  • Runs faster via npx
  • Less dependencies = less troubles