
# CLI

`./vendor/bin/tailwindphp` — порт PHP **[@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/next/packages/%40tailwindcss-cli)** без потреби в Node.js. Він приймає ті самі параметри збірки, крім карт джерела (`--map`), але інакше сканує вміст: див. [Що сканує CLI](#what-the-cli-scans). Після `composer require tailwindphp/tailwindphp` бінарний файл вбудовується в `vendor/bin/`.

Якщо під час виконання вам потрібен лише CSS з PHP, використовуйте [API](https://tailwindphp.inline0.dev/uk/docs/api) — CLI призначено для робочих процесів збірки, які записують таблицю стилів на диск.

## Швидкий початок

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

## Параметри

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

Передавайте значення довгих параметрів за допомогою `=`: `--input=./src/app.css`, `--output=./dist/styles.css`, `--cwd=/path/to/project`. Зараз значення, відокремлене пробілом після довгого параметра (`--input ./src/app.css`), мовчки ігнорується, а збірка використовує типові значення ([#13](https://github.com/inline0/tailwindphp/issues/13)). Короткі параметри приймають значення наступним аргументом (`-i ./src/app.css`).

| Параметр | Опис | За замовчуванням |
|---|---|---|
| `-i, --input` | Вхідний файл CSS; `--input=-` читає його зі stdin | `@import "tailwindcss"` |
| `-o, --output` | Вихідний файл | `-` (stdout) |
| `-w, --watch` | Стежити за змінами й за потреби перебудовувати | — |
| `-m, --minify` | Оптимізувати й мінімізувати результат | — |
| `--optimize` | Згідно з документацією, «оптимізувати без мінімізації»; наразі мінімізує так само, як `--minify` ([#9](https://github.com/inline0/tailwindphp/issues/9)) | — |
| `--cwd` | Поточний робочий каталог | `.` |
| `-h, --help` | Показати інформацію про використання | — |
| `-V, --version` | Вивести версію | — |
| `-v, --verbose` | Вивести трасування стека, якщо збірка завершується помилкою | — |

Коли `--output` має значення `-` (за замовчуванням), скомпільований CSS виводиться в stdout, тож його можна передати далі через конвеєр. Повідомлення про перебіг (банер версії та `Done in …ms`) виводяться в stderr.

На відміну від `@tailwindcss/cli`, опції `--map` немає: TailwindPHP не створює карт джерела.

## Вхідний CSS

Створіть `app.css` з імпортом, темою та директивами Tailwind:

```css
@import "tailwindcss";

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

## Що сканує CLI

Сканування вмісту в CLI поки що не обробляє `@source` так само, як це робить `@tailwindcss/cli` ([#8](https://github.com/inline0/tailwindphp/issues/8)). У поточному випуску:

- **Якщо у вхідному CSS немає директиви файлу `@source`**, CLI рекурсивно сканує робочий каталог (`--cwd`). Це стосується також `vendor/` і `node_modules/`; `.gitignore` не враховується.
- **Якщо є одна чи більше директив файлу `@source`**, CLI рекурсивно сканує **каталог вхідного файлу**. Шлях або шаблон у директиві не застосовується: `@source "../templates"` поруч із `src/app.css` сканує `src/`, а не `templates/`.
- Директиви **`@source not "…"`** пропускаються; вони нічого не виключають.
- **`@source inline("…")`** і **`@source not inline("…")`** працюють як задокументовано, оскільки їх обробляє сам компілятор.

Читаються лише файли з такими розширеннями: `php`, `html`, `htm`, `twig`, `blade.php`, `vue`, `jsx`, `tsx`, `svelte`, `astro` і `mdx`. Назви класів беруться з атрибутів `class` і `className` — так само, як у [`tw::extractCandidates()`](https://tailwindphp.inline0.dev/uk/docs/api#twextractcandidates), тож клас, який трапляється лише в рядку PHP або JavaScript, не буде знайдено. Додайте такі класи примусово за допомогою `@source inline("…")`.

Поки це не виправлено, надійний варіант — розмістити вхідний файл CSS у корені каталогу, який потрібно сканувати:

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

Синтаксис директив, зокрема форми `not` і `inline()`, див. у [@source](https://tailwindphp.inline0.dev/uk/docs/usage/source).

## Приклади

```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 створює вихідний каталог, якщо його ще немає, і завершується з помилкою, якщо вхідний файл відсутній або шляхи до вхідного й вихідного файлів збігаються. У режимі спостереження перевіряються вхідний і проскановані файли кожні 500 мс; перебудова виконується, коли один із них змінюється або з’являється новий файл.

## Глобальне встановлення

Встановіть глобально, щоб використовувати `tailwindphp` звідусіль:

```bash
composer global require tailwindphp/tailwindphp

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

Налаштування проєкту описано в розділі [Початок роботи](https://tailwindphp.inline0.dev/uk/docs/getting-started), а генерацію CSS із PHP під час виконання — у розділі [API](https://tailwindphp.inline0.dev/uk/docs/api).
