JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 73852
  • Score
    100M100P100Q163309F
  • License MIT

Mad metrics for your rollup bundles, know all the things

Package Exports

  • rollup-plugin-analyzer

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rollup-plugin-analyzer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

rollup-plugin-analyzer NPM version js-standard-style Dependency Status Build Status

Mad metrics for your rollup bundles, know all the things

rollup-plugin-analyzer

See what's bloating your bundle, how treeshaking has treated you, and other great stuff. Perfect for console printing an analysis of your bundle or integrating in your CI workflows.

Comes in two scrumptious flavors:

rollup-plugin-analyzer

Adding as a plugin to your rollup config or build script will allow you to print a well formatted analysis to the console upon bundling or get a full analysis object for CI purposes.

rollup-config-analyzer

If using Rollup's CLI to bundle with no additional config, pass -c node:rollup-config-analyzer to print a well formatted analysis to your console.

Install

$ npm install --save-dev rollup-plugin-analyzer

Usage

from rollup config

import { plugin as analyze } from 'rollup-analyzer-plugin'

export default {
  entry: 'module.js',
  dest: 'index.js',
  format: 'cjs',
  plugins: [analyze()]
}

from build script

import { rollup } from 'rollup'
import { plugin as analyze } from 'rollup-analyzer-plugin'

rollup({
  entry: 'main.js',
  plugins: [analyze()]
}).then(...)

CI usage example

import { rollup } from 'rollup'
import { plugin as analyze } from 'rollup-analyzer-plugin'
const limitBytes = 1e6

const onAnalysis = ({bundleSize}) => {
  if (bundleSize < limitBytes) return
  console.log(`Bundle size exceeds ${limitBytes} bytes: ${bundleSize} bytes`)
  return process.exit(1)
}

rollup({
  entry: 'main.js',
  plugins: [analyze({onAnalysis})]
}).then(...)

results

logged to console on rollup completion ```sh

Rollup File Analysis

bundle size: 2.809 KB original size: 11.384 KB code reduction: 75.33 % module count: 5

file: \test\fixtures\import-d.js bundle space: 90.64 % rendered size: 2.546 KB original size: 2.57 KB code reduction: 0.93 % dependents: 1 - \test\fixtures\import-c.js

file: \test\fixtures\bundle.js bundle space: 4.27 % rendered size: 120 Bytes original size: 267 Bytes code reduction: 55.06 % dependents: 0

file: \test\fixtures\import-c.js bundle space: 2.95 % rendered size: 83 Bytes original size: 161 Bytes code reduction: 48.45 % dependents: 1

  • \test\fixtures\import-b.js ...

## Options

- **stdout** - *optional*
  - type: Boolean
  - default: `false`
  - description: Print to stdout (console.log) instead of stderr (console.error)
- **limit** - *optional*
  - type: Number
  - default: `null`
  - description: Limit number of files to output analysis of, sorted by DESC size
- **filter** - *optional*
  - type: Array | String | Function
  - default: `null`
  - description: Filter to only show imports matching the specified name(s)
  - notes: Function receives `module` object specified below, should return boolean
- **root** - *optional*
  - type: String
  - default: `process.cwd()`
  - description: Application directory, used to display file paths relatively
- **hideDeps** - *optional*
  - type: Boolean
  - default: `false`
  - description: Don't itemize dependents in the formatted output
- **showExports** - *optional*
  - type: Boolean
  - default: `false`
  - description: Show used and unused exports
- **writeTo** - *optional*
  - type: Function
  - default: `null`
  - description: Callback to be invoked with formatted string
  - callback invoked with:
    - **analysisString** *(String)*
- **onAnalysis** - *optional*
  - type: Function
  - default: `null`
  - description: Callback to be invoked with analysis object
  - notes: if this is set the formatted string will not be output
  - callback invoked with:
    - **analysisObject** *(Object)*
      - **bundleSize** *(Number)* - rendered bundle size in bytes
      - **bundleOrigSize** *(Number)* - original bundle size in bytes
      - **bundleReduction** *(Number)* - percentage of rendered bundle size reduction
      - **modules** *(Array)* - array of `module` analysis objects
        - **module** *(Object)*
          - **id** *(String)* - path of module / rollup module id
          - **size** *(Number)* - size of rendered module code in bytes
          - **origSize** *(Number)* - size of module's original code in bytes
          - **dependents** *(Array)* - list of dependent module ids / paths
          - **percent** *(Number)* - percentage of module size relative to entire bundle
          - **reduction** *(Number)* - percentage of rendered size reduction
          - **usedExports** *(Array)* - list of used named exports
          - **unusedExports** *(Array)* - list of unused named exports


## License

MIT © [Andrew Carpenter](https://github.com/doesdev)