dustoff
v1.1.0
Published
Find and remove JS/TS build artifacts wasting disk space
Maintainers
Readme
🧹 What It Does
Scan your filesystem for JavaScript/TypeScript build artifacts — directories like node_modules, .next, dist, .cache, coverage, .turbo, and files like .tsbuildinfo, .eslintcache, heap snapshots, debug logs, and more — then interactively browse, sort, select, and safely delete them to reclaim disk space.
🚀 Installation
Requires Node.js >= 18.18.0.
Via npm — no install required
npx dustoffVia npm or bun global install
npm install -g dustoff # or bun install -g dustoffVia Homebrew for macOS
brew install westpoint-io/dustoff/dustoffOn Arch Linux (AUR) — requires an AUR helper
yay -S dustoff # or paru -S dustoff
CLI Options
dustoff [options]
-d, --directory <path> Set scan root directory (default: current directory)
-E, --exclude <names> Exclude directories by name, comma-separated
-t, --target <names> Override default targets, comma-separated
-V, --verbose Write debug log to dustoff-debug.log
-h, --help Show this help message
-v, --version Show version numberExamples:
dustoff -d ~/projects # scan a specific directory
dustoff --exclude "dist,build" # skip dist and build directories
dustoff --target "node_modules,.next" # only scan for specific artifacts✨ Features
Smart Sorting
Sort by size, path, or age with s to find the biggest space hogs.
Search & Filter
Press / to search — instantly filter artifacts by path. Press f to open the type filter and show only specific artifact types (e.g. just node_modules or .next).
File Artifact Scanning
dustoff detects individual build artifact files (.tsbuildinfo, .eslintcache, debug logs, heap snapshots, etc.) and groups them by type into collapsible rows. Expand with Enter to see individual files, or select the whole group with Space.
Directory Grouping
Press x to group artifacts by parent directory. Collapse and expand groups with Enter or arrow keys. Select an entire group at once with Space on the group header. File groups nest inside their parent directory groups.
Range Multi-Select
Hold Shift + arrow keys (or use J/K) to select a contiguous range of artifacts. Shift+Space extends selection from an anchor point.
Safe Deletion
Select artifacts with Space, delete with d. Confirmation dialog and live progress tracking.
10 Built-in Themes
Cycle with t. Your choice is saved across sessions.
⌨️ Keybindings
Vim-style navigation is fully supported alongside arrow keys.
| Key | Action |
|-----|--------|
| ↑ k | Move cursor up |
| ↓ j | Move cursor down |
| Shift+↑ K | Range select up |
| Shift+↓ J | Range select down |
| g / G | Jump to top / bottom |
| PgUp PgDn | Page up / down |
| Space | Toggle selection |
| Shift+Space | Extend selection from anchor |
| a | Select all |
| d | Delete selected |
| s | Cycle sort mode |
| / | Search / filter |
| f | Type filter |
| x | Toggle directory grouping |
| Tab | Toggle detail panel |
| + / - | Scroll detail panel |
| t | Cycle theme |
| Esc | Clear selection |
| q | Quit |
🎨 Themes
Cycle through themes with t during a session. Your preference is saved to ~/.config/dustoff/config.json (or $XDG_CONFIG_HOME/dustoff/config.json) and persisted across sessions.
🔍 Detected Artifacts
Directories
| Category | Directories |
|----------|-------------|
| Package managers | node_modules, .npm, .pnpm-store |
| Framework builds | .next, .nuxt, .angular, .svelte-kit, .vite, .turbo, .nx |
| Bundler caches | .parcel-cache, .rpt2_cache, .esbuild, .rollup.cache, .cache |
| Transpiler | .swc |
| Test/coverage | coverage, .nyc_output, .jest |
| Docs/storybook | storybook-static, gatsby_cache, .docusaurus |
| Serverless | .serverless |
| Runtime | deno_cache |
| Build outputs | dist, build, .output |
Files
Files are grouped by type into collapsible rows.
| Category | Files |
|----------|-------|
| Build/compiler | .tsbuildinfo |
| Linter/formatter caches | .eslintcache, .stylelintcache |
| Yarn PnP | .pnp.cjs, .pnp.loader.mjs |
| Package manager logs | npm-debug.log*, yarn-error.log*, yarn-debug.log*, pnpm-debug.log*, .pnpm-debug.log*, lerna-debug.log* |
| Profiling/diagnostics | *.heapsnapshot, *.cpuprofile, *.heapprofile |
| Package archives | *.tgz |
🤝 Contributing
Contributions are welcome! Check the CONTRIBUTING.md guide to get started.
