UNPKG

vite-plugin-unused-images

Version:

A Vite plugin to detect and report unused image assets in your project

142 lines (105 loc) 4.08 kB
# vite-plugin-unused-images **English** | [中文](README.CN.md) > A lightweight, zero-config Vite plugin that finds unused image assets in your project and reports them in a developer-friendly way. --- ## ✨ Features - Runs automatically at build time, works out-of-the-box - 🎯 Supports PNG, JPG, SVG, WebP and all common formats - 🔧 Customizable scan directories, exclude rules and output path - 🎨 Colorized CLI output + detailed JSON report, perfect for CI - 🚨 Optional “fail the build when unused images are found” --- ## 📦 Installation ```bash bun i -D vite-plugin-unused-images ``` --- ## 🚀 Quick Start ### 1. Add to your Vite config ```ts // vite.config.ts import { defineConfig } from 'vite' import unusedImages from 'vite-plugin-unused-images' export default defineConfig({ plugins: [ unusedImages({ /* override any defaults if needed */ }) ] }) ``` ### 2. Run build ```bash bun run build ``` Example terminal output: ``` 🔍 Scanning for unused images... 📦 Found 3 unused images 📝 Report saved to unused-images.json Unused images: - src/assets/logo-old.png 12 KB 2024-06-01 - public/bg-unused.webp 89 KB 2024-05-28 - src/assets/icons/x.svg 3 KB 2024-05-25 ``` --- ## ⚙️ Options | Option | Type | Default | Description | | -------------- | ---------- | ----------------------------------------- | ------------------------------------------ | | `imageDirs` | `string[]` | `['src/assets','public']` | Directories to scan for images | | `sourceDirs` | `string[]` | `['src']` | Directories to scan for source code | | `extensions` | `string[]` | `['png','jpg','jpeg','gif','svg','webp']` | Image extensions to check | | `exclude` | `string[]` | `[]` | Glob patterns to ignore | | `outputFile` | `string` | `'unused-images.json'` | Path to save the JSON report | | `failOnUnused` | `boolean` | `false` | Throw error if any unused images are found | | `deleteUnused` | `boolean` | `false` | Delete unused images from output directory | ### Custom example ```ts unusedImages({ imageDirs: ['src/assets/images', 'src/assets/icons'], sourceDirs: ['src', 'docs'], extensions: ['png', 'svg'], exclude: ['**/node_modules/**', '**/*.d.ts'], outputFile: 'reports/unused-images.json', failOnUnused: true, deleteUnused: false }) ``` --- ## 📊 Report Format Generated JSON looks like: ```jsonc { "timestamp": "2024-09-04T12:00:00.000Z", "unusedCount": 2, "unusedImages": [ { "path": "src/assets/banner.png", "size": "42 KB", "lastModified": "2024-08-30" }, { "path": "public/icons/close.svg", "size": "1 KB", "lastModified": "2024-08-28" } ] } ``` ## 🧰 FAQ | Problem | Cause | Solution | | ------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------- | | Dynamically imported images are flagged as unused | Path concatenation or variable references | Exclude the directory in `exclude` or explicitly reference the asset | | Remote CDN images are scanned | Plugin only scans local filesystem | No action needed—remote URLs are ignored | --- ## 📄 License MIT © 2024-present --- ## 🤝 Contributing Issues and PRs are welcome! To develop locally: ```bash git clone https://github.com/Sunrisies/vite-plugin-unused-images.git cd vite-plugin-unused-images bun install ```