
# CLI

`./vendor/bin/tailwindphp` este o portare PHP a **[@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/next/packages/%40tailwindcss-cli)** care nu necesită Node.js. Acceptă aceleași opțiuni de construire, cu excepția hărților sursă (`--map`), dar scanează conținutul diferit: consultați [Ce scanează CLI](#what-the-cli-scans). După `composer require tailwindphp/tailwindphp`, executabilul este legat în `vendor/bin/`.

Dacă aveți nevoie doar de CSS în timpul rulării din PHP, folosiți în schimb [API](https://tailwindphp.inline0.dev/ro/docs/api) — CLI este destinat fluxurilor de lucru din etapa de construire, care scriu o foaie de stiluri pe disc.

## Pornire rapidă

```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
```

## Opțiuni

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

Specificați valorile opțiunilor lungi folosind `=`: `--input=./src/app.css`, `--output=./dist/styles.css`, `--cwd=/path/to/project`. O valoare separată prin spațiu după o opțiune lungă (`--input ./src/app.css`) este ignorată momentan fără eroare, iar compilarea folosește valorile implicite ([#13](https://github.com/inline0/tailwindphp/issues/13)). Opțiunile scurte preiau valoarea din argumentul următor (`-i ./src/app.css`).

| Opțiune | Descriere | Implicit |
|---|---|---|
| `-i, --input` | Fișier de intrare CSS; `--input=-` îl citește de la intrarea standard | `@import "tailwindcss"` |
| `-o, --output` | Fișier de ieșire | `-` (ieșire standard) |
| `-w, --watch` | Urmărește modificările și reconstruiește după nevoie | — |
| `-m, --minify` | Optimizează și minifică rezultatul | — |
| `--optimize` | Documentată ca „optimizează fără a minifica”; momentan minifică la fel ca `--minify` ([#9](https://github.com/inline0/tailwindphp/issues/9)) | — |
| `--cwd` | Directorul de lucru curent | `.` |
| `-h, --help` | Afișează informații de utilizare | — |
| `-V, --version` | Afișează versiunea | — |
| `-v, --verbose` | Afișează urmărirea stivei când compilarea eșuează | — |

Când `--output` este `-` (valoarea implicită), CSS compilat este scris la ieșirea standard, astfel încât îl puteți redirecționa în altă parte. Mesajele de progres (bannerul versiunii și `Done in …ms`) sunt trimise la ieșirea de eroare standard.

Spre deosebire de `@tailwindcss/cli`, nu există o opțiune `--map`: TailwindPHP nu generează hărți sursă.

## Intrare CSS

Creați un `app.css` cu importul Tailwind, tema și directivele:

```css
@import "tailwindcss";

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

## Ce scanează CLI

Scanarea conținutului în CLI nu urmează încă `@source` așa cum o face `@tailwindcss/cli` ([#8](https://github.com/inline0/tailwindphp/issues/8)). În versiunea actuală:

- **Fără o directivă de fișier `@source`** în intrarea CSS, CLI scanează recursiv directorul de lucru (`--cwd`). Sunt incluse și `vendor/` și `node_modules/`; `.gitignore` nu este consultat.
- **Cu una sau mai multe directive de fișier `@source`**, CLI scanează recursiv directorul **fișierului de intrare**. Calea sau globul din directivă nu se aplică: `@source "../templates"` aflat lângă `src/app.css` scanează `src/`, nu `templates/`.
- Directivele **`@source not "…"`** sunt ignorate; nu exclud nimic.
- **`@source inline("…")`** și **`@source not inline("…")`** funcționează conform documentației, deoarece compilatorul le gestionează direct.

Sunt citite doar fișierele cu aceste extensii: `php`, `html`, `htm`, `twig`, `blade.php`, `vue`, `jsx`, `tsx`, `svelte`, `astro` și `mdx`. Numele claselor sunt preluate din atributele `class` și `className`, la fel ca în [`tw::extractCandidates()`](https://tailwindphp.inline0.dev/ro/docs/api#twextractcandidates), astfel că o clasă care apare doar într-un șir PHP sau JavaScript nu este găsită. Includeți explicit aceste clase cu `@source inline("…")`.

Până la remedierea problemei, configurația fiabilă folosește un fișier de intrare CSS în directorul de sus pe care doriți să-l scanați:

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

Consultați [@source](https://tailwindphp.inline0.dev/ro/docs/usage/source) pentru sintaxa directivelor, inclusiv formele `not` și `inline()`.

## Exemple

```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
```

CLI creează directorul de ieșire dacă acesta nu există și se închide cu o eroare dacă lipsește fișierul de intrare sau dacă aceleași căi sunt folosite pentru intrare și ieșire. Modul de urmărire verifică fișierul de intrare și fișierele scanate la fiecare 500 ms și reconstruiește rezultatul când unul dintre ele se modifică sau apare un fișier nou.

## Instalare globală

Instalați global pentru a folosi `tailwindphp` de oriunde:

```bash
composer global require tailwindphp/tailwindphp

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

Consultați [Getting Started](https://tailwindphp.inline0.dev/ro/docs/getting-started) pentru configurarea proiectului și [API](https://tailwindphp.inline0.dev/ro/docs/api) pentru generarea în timpul execuției a CSS din PHP.
