Answers the question – Why the hell is this module in a bundle?
Ever wondered why any particular module ended up in a bundle? WhyBundled is here to answer exactly this question.
It's meant to be used alongside stats report from webpack.
npm i -g whybundled
whybundled stats.json ← stats file generated by wepback
USAGE whybundled stats.json [pattern]
COMMANDS by Shows all modules that were brought into the bundle by a particular module.
OPTIONS --limit Limits output of reasons and files [number] [default: 20] --filesOnly Only include files [boolean] --modulesOnly Only include modules [boolean] --directoryOnly Only include direct dependencies [boolean] --transitiveOnly Only include transitive dependencies [boolean] --duplicatesOnly Only include modules that have duplicates in a resulting bundle [boolean] --ignore Comma separated list of glob patterns to exclude modules from final output [string] --sortBy Sort modules, available fields: size, imported. E.g. size:asc or size:desc. [string] --help Output usage information --version Output the version number
EXAMPLES whybundled stats.json --ignore babel-runtime,tslib whybundled stats.json --modulesOnly whybundled by stats.json styled-components
MODULE isobject ├─ imported: 1 time ← number of times module imported ├─ type: [transitive] ← type of a dependency can be either direct or transitive │ └─ isobject -> is-plain-object -> styled-components ← for transitive dependencies whybundled outputs a chain of dependencies up to the closest direct │ ├─ locations: ← where module is located in a project │ └─ ../node_modules/isobject/ │ ├─ files: ← list of files that were included for this module │ └─ ../node_modules/isobject/index.js │ └─ reasons: ← list of reasons why module was included in a bundle └─ is-plain-object └─ ../node_modules/is-plain-object/index.js 10:15-34 [cjs require]
If module has been bundled several times from different locations
[multiple]badge next to the locations field:
whybundledshows all modules that were brought into the bundle by a particular module:
USAGE whybundled by stats.json [pattern]
OPTIONS --limit Limits output of reasons and files [number=20] --only Limits output to only include modules that were included by specified module exclusively [boolean] --ignore Comma separated list of glob patterns to exclude modules from final output [string]
EXAMPLES whybundled by stats.json styled-components whybundled by stats.json styled-components --ignore babel-runtime,tslib whybundled by stats.json styled-components --only