
# 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/bg/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 сканира рекурсивно **директорията на входния файл**. Пътят или шаблонът glob в директивата не се прилага: `@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/bg/docs/api#twextractcandidates), затова клас, който присъства само в низ PHP или JavaScript, няма да бъде открит. Добавете принудително такива класове с `@source inline("…")`.

Докато това не бъде поправено, надеждната настройка е да поставите входен файл CSS в началото на директорията, която искате да сканирате:

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

Вижте [@source](https://tailwindphp.inline0.dev/bg/docs/usage/source) за синтаксиса на директивата, включително формите `not` и `inline()`.

## Примери

```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 ms и компилира отново при промяна на някой от тях или при появата на нов файл.

## Глобална инсталация

Инсталирайте глобално, за да използвате `tailwindphp` отвсякъде:

```bash
composer global require tailwindphp/tailwindphp

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

Вижте [Първи стъпки](https://tailwindphp.inline0.dev/bg/docs/getting-started) за настройване на проекта и [API](https://tailwindphp.inline0.dev/bg/docs/api) за генериране на CSS по време на изпълнение от PHP.
