whybundled

    2.0.0 • Public • Published


    whybundled




    NPM Version License Github Issues Coverage Status Commitizen Friendly



    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.

    Quick Start

    npm i -g whybundled
    
    whybundled stats.json ← stats file generated by wepback

    whybundled default report

    Usage

    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

    Features

    Stats Analyses

    • 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]

    Duplicates Badge

    If module has been bundled several times from different locations whybundled adds [multiple] badge next to the locations field:

    whybundled duplicates

    Brought by

    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

    whybundled brought by

    Install

    npm i whybundled

    DownloadsWeekly Downloads

    3,510

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    37 kB

    Total Files

    7

    Last publish

    Collaborators

    • sysoev