vite-plugin-bundle-report
v0.2.0
Published
Vite plugin built on rollup-plugin-visualizer that emits a combined bundle and dependency report.
Maintainers
Readme
vite-plugin-bundle-report
A Vite plugin that generates a single JSON report after every build. It uses rollup-plugin-visualizer internally — you do not need to install or configure it yourself.
The output includes:
- emitted chunks and assets ("shipped" view)
- detected dependency packages
- source modules that participated in the bundle
- raw visualizer JSON data (from
rollup-plugin-visualizer)
Install
npm install -D vite-plugin-bundle-report
# or
pnpm add -D vite-plugin-bundle-reportUsage
// vite.config.ts
import { defineConfig } from 'vite';
import { bundleReportPlugin } from 'vite-plugin-bundle-report';
export default defineConfig({
plugins: [
bundleReportPlugin({
dependenciesOutputFile: 'dist/dependencies.json',
reportSections: ['dependencyPackages', 'shipped'],
}),
],
});The plugin only runs during build (apply: 'build') so it has no effect on dev server startup.
Options
| Option | Type | Required | Description |
|--------------------------|----------|----------|-----------------------------------------------------------------------------|
| dependenciesOutputFile | string | ✓ | Path (relative to projectRoot) to write the combined report. |
| reportSections | Exclude<ReportSection, 'entryChunks'>[] | — | Select which sections to populate in the report. Defaults to all sections. |
| projectRoot | string | — | Absolute path to the project root. Defaults to Vite's resolved root. |
ReportSection values (passable via reportSections):
dependencyPackagessourceModulesshippedvisualizer
Note: entryChunks is always included in the output and cannot be passed to reportSections.
Output shape
Combined report (dependenciesOutputFile)
{
"entryChunks": ["my-lib.es.js"],
"dependencyPackages": ["react", "react-dom", "three"],
"sourceModules": ["src/index.ts", "src/utils.ts"],
"shipped": [
{ "type": "chunk", "fileName": "my-lib.es.js", "isEntry": true, "imports": [], "dynamicImports": [], "exports": ["default"], "size": 12345 },
{ "type": "asset", "fileName": "style.css", "size": 678 }
],
"visualizer": {
"version": 2
}
}visualizer contains the raw JSON generated by rollup-plugin-visualizer and may vary between visualizer versions.
When you provide reportSections:
entryChunksis always included, even if you omit it.- selected sections contain data.
- unselected sections are omitted from the JSON output.
Using only when analyzing
You can conditionally add the plugin the same way you would with any Vite plugin:
if (process.env.ANALYZE) {
plugins.push(
...bundleReportPlugin({
dependenciesOutputFile: 'dist/dependencies.json',
})
);
}Testing
This repository includes an integration test setup with Vitest. The test creates a temporary Vite project, runs a build with the plugin, and verifies the generated dependencies.json schema.
pnpm testContributing
Contributions are welcome. See CONTRIBUTING.md for development setup, contribution workflow, and release notes for maintainers.
License
MIT
