
# CLI

`./vendor/bin/tailwindphp` to port PHP **[@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/next/packages/%40tailwindcss-cli)** niewymagający Node.js. Przyjmuje te same opcje kompilacji, z wyjątkiem map źródłowych (`--map`), ale skanuje treść inaczej: zobacz [Co skanuje CLI](#what-the-cli-scans). Po `composer require tailwindphp/tailwindphp` plik binarny jest dołączany do `vendor/bin/`.

Jeśli w czasie działania potrzebujesz tylko CSS z PHP, użyj zamiast tego [API](https://tailwindphp.inline0.dev/pl/docs/api) — CLI służy do pracy na etapie budowania, która zapisuje arkusz stylów na dysku.

## Szybki start

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

## Opcje

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

Podawaj wartości długich opcji za pomocą `=`: `--input=./src/app.css`, `--output=./dist/styles.css`, `--cwd=/path/to/project`. Wartość oddzielona spacją po długiej opcji (`--input ./src/app.css`) jest obecnie ignorowana bez błędu, a kompilacja używa wartości domyślnych ([#13](https://github.com/inline0/tailwindphp/issues/13)). Krótkie opcje przyjmują wartość jako następny argument (`-i ./src/app.css`).

| Opcja | Opis | Domyślnie |
|---|---|---|
| `-i, --input` | Wejściowy plik CSS; `--input=-` odczytuje go ze standardowego wejścia | `@import "tailwindcss"` |
| `-o, --output` | Plik wyjściowy | `-` (standardowe wyjście) |
| `-w, --watch` | Obserwuj zmiany i w razie potrzeby buduj ponownie | — |
| `-m, --minify` | Optymalizuj i minifikuj wynik | — |
| `--optimize` | Opisano jako „optymalizuj bez minifikacji”; obecnie minifikuje tak jak `--minify` ([#9](https://github.com/inline0/tailwindphp/issues/9)) | — |
| `--cwd` | Bieżący katalog roboczy | `.` |
| `-h, --help` | Wyświetl informacje o użyciu | — |
| `-V, --version` | Wyświetl wersję | — |
| `-v, --verbose` | Wyświetl ślad stosu w razie niepowodzenia kompilacji | — |

Gdy `--output` ma wartość `-` (domyślną), skompilowane CSS jest zapisywane na standardowe wyjście, więc można przekierować je dalej. Komunikaty o postępie (baner wersji i `Done in …ms`) trafiają na standardowe wyjście błędów.

W przeciwieństwie do `@tailwindcss/cli` nie ma opcji `--map`: TailwindPHP nie generuje map źródłowych.

## Dane wejściowe CSS

Utwórz `app.css` z importem Tailwind, motywem i dyrektywami:

```css
@import "tailwindcss";

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

## Co skanuje CLI

Skanowanie zawartości w CLI nie obsługuje jeszcze `@source` tak jak `@tailwindcss/cli` ([#8](https://github.com/inline0/tailwindphp/issues/8)). W bieżącym wydaniu:

- **Gdy w wejściowym CSS nie ma dyrektywy pliku `@source`**, CLI rekurencyjnie skanuje katalog roboczy (`--cwd`). Obejmuje to `vendor/` i `node_modules/`; `.gitignore` nie jest brane pod uwagę.
- **Gdy występuje co najmniej jedna dyrektywa pliku `@source`**, CLI rekurencyjnie skanuje **katalog pliku wejściowego**. Ścieżka ani wzorzec glob z dyrektywy nie są stosowane: `@source "../templates"` obok `src/app.css` skanuje `src/`, a nie `templates/`.
- Dyrektywy **`@source not "…"`** są pomijane; niczego nie wykluczają.
- **`@source inline("…")`** i **`@source not inline("…")`** działają zgodnie z dokumentacją, ponieważ obsługuje je sam kompilator.

Odczytywane są tylko pliki z następującymi rozszerzeniami: `php`, `html`, `htm`, `twig`, `blade.php`, `vue`, `jsx`, `tsx`, `svelte`, `astro` i `mdx`. Nazwy klas są pobierane z atrybutów `class` i `className`, tak samo jak w [`tw::extractCandidates()`](https://tailwindphp.inline0.dev/pl/docs/api#twextractcandidates), więc klasa występująca wyłącznie w ciągu PHP lub JavaScript nie zostanie znaleziona. Wymuś uwzględnienie takich klas za pomocą `@source inline("…")`.

Dopóki nie zostanie to naprawione, niezawodna konfiguracja to wejściowy plik CSS umieszczony na górze skanowanego katalogu:

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

Zobacz [składnię dyrektyw](https://tailwindphp.inline0.dev/pl/docs/usage/source), w tym formy `not` i `inline()`.

## Przykłady

```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 tworzy katalog wyjściowy, jeśli nie istnieje, i kończy działanie z błędem, gdy brakuje pliku wejściowego lub ścieżki wejściowa i wyjściowa są identyczne. Tryb obserwowania sprawdza plik wejściowy i skanowane pliki co każde 500 ms, a następnie ponownie buduje wynik po zmianie któregoś z nich lub pojawieniu się nowego pliku.

## Instalacja globalna

Zainstaluj globalnie, aby używać `tailwindphp` z dowolnego miejsca:

```bash
composer global require tailwindphp/tailwindphp

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

Zobacz [Pierwsze kroki](https://tailwindphp.inline0.dev/pl/docs/getting-started), aby skonfigurować projekt, oraz [API](https://tailwindphp.inline0.dev/pl/docs/api), aby dowiedzieć się o generowaniu środowiska uruchomieniowego CSS z PHP.
