Convert Istanbul/Vitest coverage HTML reports into a single self-contained HTML file.
Perfect for:
npm install -D coverage-single-html
Or run directly with npx:
npx coverage-single-html coverage/lcov-report -o report.html
# Basic usage - outputs to coverage-report.html
coverage-single-html coverage/merged
# Specify output file
coverage-single-html coverage/lcov-report -o my-report.html
# Custom title
coverage-single-html coverage -t "My Project Coverage" -o coverage.html
Arguments:
<input-dir> Directory containing Istanbul/Vitest HTML coverage report
Options:
-o, --output Output file path (default: coverage-report.html)
-t, --title Custom title for the report
-h, --help Show help message
-v, --version Show version
import { bundleCoverage } from 'coverage-single-html'
import { writeFileSync } from 'fs'
const result = bundleCoverage({
inputDir: 'coverage/lcov-report',
title: 'My Coverage Report',
})
writeFileSync('report.html', result.html)
console.log(`Bundled ${result.fileCount} files`)
console.log(`Total size: ${result.totalSize} bytes`)
Works with any tool that generates Istanbul-style HTML reports:
@vitest/coverage-v8)jest --coverage)nyc report --reporter=html)c8 report --reporter=html)n/j for next uncovered, b/p/k for previousView a sample coverage report generated from a real project (62 files bundled into a single 662KB HTML file).
# Generate coverage with Vitest
npm run test -- --coverage
# Bundle into single file
npx coverage-single-html coverage -o coverage-report.html
# Open in browser
open coverage-report.html # macOS
start coverage-report.html # Windows
MIT