
# CLI

`./vendor/bin/tailwindphp` is een PHP-port van **[@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/next/packages/%40tailwindcss-cli)** waarvoor geen Node.js nodig is. Het gebruikt dezelfde buildopties, behalve sourcemaps (`--map`), maar scant inhoud op een andere manier: zie [Wat CLI scant](#what-the-cli-scans). Na `composer require tailwindphp/tailwindphp` wordt het binaire bestand gekoppeld aan `vendor/bin/`.

Als je tijdens runtime alleen CSS uit PHP nodig hebt, gebruik dan in plaats daarvan [API](https://tailwindphp.inline0.dev/nl/docs/api) — CLI is bedoeld voor workflows tijdens het bouwen die een stylesheet naar schijf schrijven.

## Snel aan de slag

```bash
# Build CSS from an input file
./vendor/bin/tailwindphp -i ./src/app.css -o ./dist/styles.css

# Watch for changes and rebuild
./vendor/bin/tailwindphp -i ./src/app.css -o ./dist/styles.css --watch

# Build minified for production
./vendor/bin/tailwindphp -i ./src/app.css -o ./dist/styles.css --minify
```

## Opties

```bash
tailwindphp [-i input.css] [-o output.css] [--watch] [options…]
```

Geef lange opties hun waarde met `=`: `--input=./src/app.css`, `--output=./dist/styles.css`, `--cwd=/path/to/project`. Een met spaties gescheiden waarde na een lange optie (`--input ./src/app.css`) wordt momenteel zonder foutmelding genegeerd, waarna de build terugvalt op de standaardwaarden ([#13](https://github.com/inline0/tailwindphp/issues/13)). Korte opties nemen de waarde als volgend argument (`-i ./src/app.css`).

| Optie | Beschrijving | Standaardwaarde |
|---|---|---|
| `-i, --input` | Invoerbestand CSS; `--input=-` leest het van stdin | `@import "tailwindcss"` |
| `-o, --output` | Uitvoerbestand | `-` (stdout) |
| `-w, --watch` | Wijzigingen volgen en indien nodig opnieuw bouwen | — |
| `-m, --minify` | Uitvoer optimaliseren en verkleinen | — |
| `--optimize` | Gedocumenteerd als "optimaliseren zonder verkleinen"; verkleint momenteel net als `--minify` ([#9](https://github.com/inline0/tailwindphp/issues/9)) | — |
| `--cwd` | De huidige werkmap | `.` |
| `-h, --help` | Gebruiksinformatie weergeven | — |
| `-V, --version` | De versie afdrukken | — |
| `-v, --verbose` | De stacktrace afdrukken als een build mislukt | — |

Wanneer `--output` `-` is (de standaardwaarde), wordt de gecompileerde CSS naar stdout geschreven, zodat je deze kunt doorsturen. Voortgangsberichten (de versieaankondiging en `Done in …ms`) gaan naar stderr.

In tegenstelling tot `@tailwindcss/cli` is er geen optie `--map`: TailwindPHP genereert geen sourcemaps.

## Invoer-CSS

Maak een `app.css` met je Tailwind-import, thema en directives:

```css
@import "tailwindcss";

@theme {
    --color-brand: #3b82f6;
}
```

## Wat CLI scant

Contentscanning in de CLI volgt `@source` nog niet zoals `@tailwindcss/cli` dat doet ([#8](https://github.com/inline0/tailwindphp/issues/8)). In de huidige versie:

- **Zonder `@source`-bestanddirective** in de invoer-CSS scant de CLI de werkmap (`--cwd`) recursief. Dat omvat `vendor/` en `node_modules/`; `.gitignore` wordt niet geraadpleegd.
- **Met een of meer `@source`-bestanddirectives** scant de CLI de map van het **invoerbestand** recursief. Het pad of globpatroon in de directive wordt niet toegepast: `@source "../templates"` naast `src/app.css` scant `src/`, niet `templates/`.
- **`@source not "…"`-directives** worden overgeslagen; ze sluiten niets uit.
- **`@source inline("…")`** en **`@source not inline("…")`** werken zoals beschreven, omdat de compiler ze zelf verwerkt.

Alleen bestanden met deze extensies worden gelezen: `php`, `html`, `htm`, `twig`, `blade.php`, `vue`, `jsx`, `tsx`, `svelte`, `astro` en `mdx`. Klassenamen worden opgehaald uit de attributen `class` en `className`, net als in [`tw::extractCandidates()`](https://tailwindphp.inline0.dev/nl/docs/api#twextractcandidates). Een klasse die alleen voorkomt in een PHP- of JavaScript-string wordt dus niet gevonden. Neem zulke classes op met `@source inline("…")`.

Tot dit is opgelost, is de betrouwbare configuratie een invoerbestand CSS bovenaan de map die je wilt laten scannen:

```css
/* templates/app.css: scans templates/ recursively */
@import "tailwindcss";
@source "./";
```

Zie [@source](https://tailwindphp.inline0.dev/nl/docs/usage/source) voor de syntaxis van directives, waaronder de vormen `not` en `inline()`.

## Voorbeelden

```bash
# Build from an input file
tailwindphp -i ./src/app.css -o ./dist/styles.css

# Build minified for production
tailwindphp -i ./src/app.css -o ./dist/styles.css -m

# Watch mode with minification
tailwindphp -i ./src/app.css -o ./dist/styles.css -w -m

# Run against a different working directory
tailwindphp -i app.css -o dist/styles.css --cwd=/path/to/project
```

De CLI maakt de uitvoermap aan als die niet bestaat en stopt met een foutmelding als het invoerbestand ontbreekt of de invoer- en uitvoerpaden identiek zijn. De watchmodus controleert het invoerbestand en de gescande bestanden elke 500 ms en bouwt opnieuw zodra een ervan verandert of er een nieuw bestand verschijnt.

## Globale installatie

Installeer wereldwijd om `tailwindphp` overal te gebruiken:

```bash
composer global require tailwindphp/tailwindphp

# Now available globally
tailwindphp -i ./src/app.css -o ./dist/styles.css
```

Zie [Aan de slag](https://tailwindphp.inline0.dev/nl/docs/getting-started) voor de projectconfiguratie en [API](https://tailwindphp.inline0.dev/nl/docs/api) voor het genereren van CSS tijdens runtime vanuit PHP.
