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
- Outputs list of all modules/files included in the bundle in from most imported to least imported order.
- Builds a chain of dependencies for transitive dependencies.
- Shows all files that were included for particular module.
- Shows all reasons why particular module was included.
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 whybundled
adds [multiple]
badge next to the locations field:
Using by
command whybundled
shows 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