Get the bundle size of an npm package.
Clone or download
Latest commit 936532e Nov 27, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
__test__ update snapshot Nov 27, 2018
lib support yarn global installation Nov 27, 2018
media update preview Apr 19, 2017
.editorconfig init Dec 23, 2016
.gitattributes init Dec 23, 2016
.gitignore init Dec 23, 2016
LICENSE init Dec 23, 2016
README.md update deps Nov 27, 2018
circle.yml init Dec 23, 2016
cli.js fix lint Nov 27, 2018
package.json Release v2.1.2 Nov 27, 2018
yarn.lock support yarn global installation Nov 27, 2018

README.md

package-size

NPM version NPM downloads Build Status donate

preview

How does this work?

  1. Install the packages with yarn or npm in a temp directory
  2. Bundle the packages with webpack and get the bundle size
  3. Show you the bundle size and cache it by package version

Install

yarn global add package-size

Usage

The package is bundled with Webpack.

# get the size of vue bundle
package-size vue

# get the size of react+react-dom bundle
package-size react,react-dom

# get the size of vue react+react-dom preact bundles
package-size vue react,react-dom preact

# get the size of react+react-dom without using the cache
package-size react,react-dom --no-cache

# get the size of file in current working directory
package-size ./dist/index.js
# or a package in current working directory, explictly using `--cwd` flag
package-size vue --cwd

# or event multiple versions for the same package!
package-size react@0.10 react@0.14 react@15

# save results to file system in JSON format
# defaults to ./package-size-output.json
package-size cherow --output
# or custom path
package-size cherow --output stats.json

# analyze bundle with webpack-bundle-analyzer
package-size cherow --analyze

API

const getSizes = require('package-size')

getSizes('react,react-dom', options)
  .then(data => {
    console.log(data)
    //=>
    {
      name: 'react,react-dom',
      size: 12023, // in bytes
      minified: 2342,
      gzipped: 534,
      versionedName: 'react@16.0.0,react-dom@16.0.0'
    }
  })

options

sort

Type: boolean
Default: false

Sort packages in size (from small to large).

cwd

Type: boolean
Default: false

Resolve modules in current working directory instead of a cache folder. Relative path will set cwd to true by default.

externals

Type: string or Array<string|RegExp>
Default: undefined

The package to exclude from bundled file, for example, to get the bundle size of styled-jsx/style we need to exclude react:

package-size styled-jsx/style --externals react

Note that if some item in externals is provided as string, it will be wrapped in a regular expression. For example: react is treated as /^react$/

cache

Type: boolean
Default: true

If cache is set to false, then package-size will not use cached build sizes. To use this from the CLI, pass --no-cache as an argument.

target

Type: string
Default: browser Values: browser node

Build target. In node target, all node_modules will be excluded and output format is set to CommonJS.

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Author

package-size © EGOIST, Released under the MIT License.
Authored and maintained by EGOIST with help from contributors (list).

egoist.moe · GitHub @egoist · Twitter @_egoistlily