Find and remove JS/TS build artifacts wasting disk space.
Demo recorded with the Catppuccin Mocha theme. See Theme Gallery for all 10 themes.
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.
Requires Node.js >= 18.18.0.
-
Via npm β no install required
npx dustoff
-
Via npm or bun global install
npm install -g dustoff # or bun install -g dustoff -
Via Homebrew for macOS
brew install westpoint-io/dustoff/dustoff
-
On Arch Linux (AUR) β requires an AUR helper
yay -S dustoff # or paru -S dustoff
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 number
Examples:
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 artifactsSort by size, path, or age with s to find the biggest space hogs.
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).
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.
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.
Hold Shift + arrow keys (or use J/K) to select a contiguous range of artifacts. Shift+Space extends selection from an anchor point.
Select artifacts with Space, delete with d. Confirmation dialog and live progress tracking.
Cycle with t. Your choice is saved across sessions.
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 |
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.
![]() Tokyo Night |
![]() Nord Frost |
![]() Dracula |
![]() Gruvbox Dark |
![]() RosΓ© Pine |
![]() Kanagawa |
![]() Everforest |
![]() Solarized Dark |
![]() Cyberpunk Neon |
![]() Catppuccin Mocha |
| 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 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 |
Contributions are welcome! Check the CONTRIBUTING.md guide to get started.















