howfat
v0.3.8
Published
Shows how fat is a package
Downloads
1,561
Maintainers
Readme
howfat
Shows how fat is a package together with its dependencies
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
Just show a simple stats:
$ npx howfat -r simple [email protected]
Dependencies: 1
Size: 41.49kb
Files: 37
as a table:
$ npx howfat -r table [email protected]
[email protected] (1 dep, 41.49kb, 37 files)
╭────────────────┬──────────────┬─────────┬───────╮
│ Name │ Dependencies │ Size │ Files │
├────────────────┼──────────────┼─────────┼───────┤
│ [email protected] │ 0 │ 20.78kb │ 14 │
╰────────────────┴──────────────┴─────────┴───────╯
as a json:
$ npx howfat -r json [email protected] --space 2
{
"package": "[email protected]",
"dependencyCount": 1,
"fileCount": 37,
"unpackedSize": 42486,
"duplicate": false,
"error": false,
"unmet": false,
"author": "{name:James Halliday,email:[email protected],url:http://substack.net}",
"deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
"description": "Recursively mkdir, like `mkdir -p`",
"license": "MIT",
"maintainers": "[{name:isaacs,email:[email protected]}]",
"ownStats": {
"dependencyCount": 1,
"fileCount": 23,
"unpackedSize": 21212
},
"children": [
{
"package": "[email protected]",
"dependencyCount": 0,
"fileCount": 14,
"unpackedSize": 21274,
"duplicate": false,
"error": false,
"unmet": false,
"author": "{name:James Halliday,email:[email protected],url:http://substack.net}",
"deprecated": "",
"description": "parse argument options",
"license": "MIT",
"maintainers": "[{email:[email protected],name:ljharb},{email:[email protected],name:emilbayes}]",
"ownStats": {
"dependencyCount": 1,
"fileCount": 14,
"unpackedSize": 21274
},
"children": []
}
]
}
Other options
-d, --dev-dependencies BOOLEAN Fetch dev dependencies, default false
-p, --peer-dependencies BOOLEAN Fetch peer dependencies, default false
-r, --reporter STRING 'json', 'simple', 'table', 'tree', default tree
--fields STRING Displayed fields separated by a comma:
dependencies,size,files,license,
author,description,maintainers,deprec,
deprecated,node,os,platform
--sort STRING Sort field. Add minus sign for
desc order, like size-. Default to 'name'
--space NUMBER Use spaces in json output, default null
-v, --verbose BOOLEAN Show additional logs
--no-colors BOOLEAN Prevent color output
--no-human-readable BOOLEAN Show size in bytes
--registry-url STRING Default to https://registry.npmjs.org/
--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
--http.proxy STRING A proxy server url
--show-config Show the current configuration
--version Show howfat version
--help Show this help
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