Visualize and analyze your Rollup bundle to see which modules are taking up space
—
Core plugin factory function and configuration options for creating bundle visualization plugins.
import { visualizer, PluginVisualizerOptions } from "rollup-plugin-visualizer";
import { Plugin, OutputOptions } from "rollup";
import { Options as OpenOptions } from "open";Creates a Rollup plugin instance for bundle visualization and analysis.
import { Plugin, OutputOptions } from "rollup";
/**
* Creates a Rollup plugin instance for bundle visualization and analysis
* @param opts - Configuration options or function returning options
* @returns Rollup plugin instance
*/
function visualizer(
opts?: PluginVisualizerOptions | ((outputOptions: OutputOptions) => PluginVisualizerOptions)
): Plugin;The visualizer function is the main entry point that accepts either static configuration options or a function that receives Rollup's output options and returns configuration.
Usage Examples:
import { visualizer } from "rollup-plugin-visualizer";
// Static configuration
export default {
plugins: [
visualizer({
filename: 'bundle-stats.html',
template: 'treemap',
open: true
})
]
};
// Dynamic configuration based on output options
export default {
plugins: [
visualizer((outputOptions) => ({
filename: `${outputOptions.dir}/stats.html`,
template: outputOptions.format === 'es' ? 'network' : 'treemap'
}))
]
};Complete configuration interface for the visualizer plugin.
import { Options as OpenOptions } from "open";
interface PluginVisualizerOptions {
/** Output file name or path (default: "stats.html") */
filename?: string;
/** DEPRECATED: Use template: "raw-data" instead */
json?: boolean;
/** HTML title for generated file (default: "Rollup Visualizer") */
title?: string;
/** Open generated file in browser (default: false) */
open?: boolean;
/** Options for opening file */
openOptions?: OpenOptions;
/** Visualization template type (default: "treemap") */
template?: TemplateType;
/** Calculate gzipped sizes (default: false) */
gzipSize?: boolean;
/** Calculate brotli sizes (default: false) */
brotliSize?: boolean;
/** Use sourcemaps for size calculation (default: false) */
sourcemap?: boolean;
/** Project root path for file path normalization */
projectRoot?: string | RegExp;
/** Use rollup's emitFile API (default: false) */
emitFile?: boolean;
/** Inclusion filters */
include?: Filter | Filter[];
/** Exclusion filters */
exclude?: Filter | Filter[];
}Key Configuration Options:
filename: Controls output file location. When using emitFile: true, must be filename only, not a path.template: Chooses visualization type. Each template provides different insights:
treemap: Best for finding large modules (rectangular layout)sunburst: Hierarchical circular view, good for deep dependency treesnetwork: Shows dependency relationships, answers "why is this included?"flamegraph: Familiar to developers, top-down hierarchical viewraw-data: JSON output for programmatic analysislist: YAML output for tracking changesgzipSize/brotliSize: Add compression analysis (cannot be used with sourcemap)sourcemap: Use sourcemaps for more accurate size analysisemitFile: Integrate with Rollup's file emission system instead of writing files directlyAdvanced Configuration Examples:
// Production build with compression analysis
visualizer({
filename: 'dist/bundle-analysis.html',
template: 'treemap',
gzipSize: true,
brotliSize: true,
open: false
})
// Development with network diagram
visualizer({
filename: 'dev-stats.html',
template: 'network',
open: true,
sourcemap: true
})
// JSON output for CI/CD integration
visualizer({
filename: 'stats.json',
template: 'raw-data',
emitFile: true
})
// With filtering
visualizer({
filename: 'filtered-stats.html',
template: 'sunburst',
exclude: [
{ file: 'node_modules/**' }, // Exclude all node_modules
{ bundle: 'vendor-*' } // Exclude vendor bundles
]
})Available visualization template types for different analysis needs.
type TemplateType = "sunburst" | "treemap" | "network" | "raw-data" | "list" | "flamegraph";Each template serves different analysis purposes:
Configuration for automatically opening generated files.
/**
* Options for opening files with the 'open' package
*/
interface OpenOptions {
/** App name or array of app names/arguments to open with */
app?: string | string[];
/** Wait for opened app to exit before calling callback */
wait?: boolean;
/** Do not bring the app to the foreground (macOS only) */
background?: boolean;
/** Open new instance of app even if one is already running */
newInstance?: boolean;
/** Allow app to exit with non-zero exit code */
allowNonzeroExit?: boolean;
}Used with the open option to customize how generated files are opened in the browser or other applications.
Install with Tessl CLI
npx tessl i tessl/npm-rollup-plugin-visualizer