maol-kill
v0.3.0
Published
Find and delete node_modules, .next, dist and other dev caches with an interactive TUI
Maintainers
Readme
maol-kill
Find and delete node_modules, .next, dist and other dev caches with an interactive TUI. Like npkill, but hunts every build artifact that eats your disk — grouped by project, monorepo-aware.
maol-kill ✔ /Users/you/projects 241 found · 21.0 GB releasable · 4.2 GB freed 🎉
❯ 3.1 GB ▾ 3d job-index-v2 (2)
2.8 GB ├ .next
300.0 MB └ node_modules
2.1 GB ▾ 12d morsis (3)
1.4 GB ├ apps/api/.wrangler
600.0 MB ├ apps/web/.next
80.0 MB └ node_modules
540.1 MB ▸ 1277d old-experiment (1)Usage
npx maol-kill # scan the current directory
npx maol-kill ~/projects # scan a specific directorySizes stream in live while the scan runs. Results are grouped by project — the nearest ancestor with a .git (so monorepo apps group under their repo) or package.json. Deleting a group header deletes every cache inside that project.
Deletion is permanent (rm -rf, no trash) and happens on a single keypress — deleted rows stay in place, struck through, so you keep your bearings.
Keys
| Key | Action |
| --- | --- |
| ↑ ↓ / j k | Move cursor |
| space / backspace / delete | Delete selected target — or every target in the project when on a group header |
| a (twice) | Delete everything in the list — the only key with a confirm, since it nukes every project at once |
| enter / ← → | Collapse / expand the project group |
| g | Toggle view: grouped by project ⇄ flat list |
| o | Open the project folder in Finder / file manager |
| s | Toggle sort: size ⇄ path |
| q / esc | Quit |
Options
--dir, -d Directory to scan (default: current directory)
--targets, -t Comma-separated dir names to hunt
--exclude Comma-separated dir names to skip while scanningDefault targets: node_modules, .next, .turbo, .wrangler, dist, build, out, coverage, .cache, .nuxt, .output, .vercel, .parcel-cache, .vite.
Reading the output
- days column — how long since the project (its
package.json) was touched. Green means stale (>180 days): a safe kill. - ⚠ —
dist/build/outcan occasionally hold real source or deploy output; double-check before deleting. - Sizes are disk usage (via
du), so they match what you actually get back.
Notes
- Symlinks are never followed, so pnpm's store and circular links are safe.
.gitdirectories are never scanned or listed.- Nested targets (a
distinsidenode_modules) are freed along with their parent.
License
MIT
