npm package: @jawish/yeet
Description: CLI tool to remove build artifacts from web projects
Author: jawish
Latest version: 1.0.0

# yeet

A CLI tool to remove build artifacts from web development projects.

## Installation

```bash
bun install -g @jawish/yeet
```

Or run directly with npx:

```bash
bunx @jawish/yeet
```

## Usage

Run `yeet` in your project directory to open the interactive interface:

```bash
yeet
```

### Commands

| Command | Description |
|---------|-------------|
| `yeet` | Open interactive mode |
| `yeet init [path]` | Create a config file (default: `~/.yeet.json`) |

### Options

| Flag | Description |
|------|-------------|
| `-t, --tree` | List detected artifacts as a tree |
| `-l, --last` | Remove items marked `quickSelect` in config |
| `-n, --dry-run` | Show what would be removed (use with `-l`) |
| `-h, --help` | Show help |
| `-v, --version` | Show version |

### Examples

```bash
yeet                    # Interactive mode
yeet --tree             # List all detected artifacts
yeet --last             # Remove quickSelect items
yeet --last --dry-run   # Preview what would be removed
yeet init               # Create ~/.yeet.json
yeet init .yeet.json    # Create config in current directory
```

## Detected Artifacts

By default, yeet detects:

- `node_modules` directories
- Lock files (`package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`, `bun.lock`)
- Build outputs (`dist`, `build`, `out`, `.output`)
- Framework caches (`.next`, `.nuxt`, `.svelte-kit`, `.astro`)
- Bundler caches (`.cache`, `.vite`, `.parcel-cache`)
- Monorepo caches (`.turbo`, `.nx`)
- TypeScript build info (`*.tsbuildinfo`)
- Test artifacts (`coverage`, `test-results`, `playwright-report`)
- Log files (`*.log`)
- OS files (`.DS_Store`, `Thumbs.db`)
- Temporary files (`.temp`, `.tmp`)

## Configuration

yeet works without configuration. To customize behavior, create a config file.

### Creating a Config File

```bash
yeet init           # Creates ~/.yeet.json (user-level)
yeet init .         # Creates .yeet.json in current directory
yeet init path/to   # Creates path/to/.yeet.json
```

### Config File Locations

Config files are loaded and merged in this order (later overrides earlier):

1. Built-in defaults
2. `~/.yeet.json` or `~/.config/yeet/config.json` (user-level)
3. `.yeet.json` at project root (nearest `package.json` or `.git`)
4. `.yeet.json` in current directory

### Config File Structure

```json
{
  "version": "1.0.0",
  "categories": [
    {
      "id": "node_modules",
      "name": "Node Modules",
      "description": "Project dependencies",
      "priority": "high",
      "quickSelect": true,
      "safetyLevel": "safe",
      "patterns": [
        {
          "pattern": "node_modules",
          "type": "directory",
          "description": "Node.js dependencies folder"
        }
      ]
    }
  ]
}
```

### Category Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique identifier |
| `name` | string | Display name |
| `description` | string | Category description |
| `priority` | `"high"` \| `"medium"` \| `"low"` | Sort priority |
| `quickSelect` | boolean | Include in `--last` command |
| `safetyLevel` | `"safe"` \| `"safe_with_reinstall"` \| `"caution"` | Risk level |
| `patterns` | array | File/directory patterns to match |

### Pattern Fields

| Field | Type | Description |
|-------|------|-------------|
| `pattern` | string | File or directory name to match |
| `type` | `"file"` \| `"directory"` \| `"glob"` | Pattern type |
| `description` | string | Pattern description |

## Safety

Files are moved to the system Trash, not permanently deleted. This allows recovery if needed.

## Development

```bash
bun install
bun run dev          # Run in dev mode
bun run build        # Build binary
bun run typecheck    # Type check
```

## License

MIT

## Links

- [GitHub](https://github.com/jawish/yeet)
- [npm](https://www.npmjs.com/package/@jawish/yeet)