
# CLI

`./vendor/bin/tailwindphp` é uma implementação PHP de **[@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/next/packages/%40tailwindcss-cli)** sem precisar de Node.js. Aceita as mesmas opções de compilação, exceto mapas de origem (`--map`), mas examina o conteúdo de outra forma: consulte [O que o CLI examina](#what-the-cli-scans). Após `composer require tailwindphp/tailwindphp`, o binário é vinculado a `vendor/bin/`.

Se precisar apenas de CSS em tempo de execução a partir de PHP, use [API](https://tailwindphp.inline0.dev/pt/docs/api) em vez disso — CLI é para fluxos de trabalho de compilação que gravam uma folha de estilos em disco.

## Início rápido

```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ções

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

Forneça valores às opções longas com `=`: `--input=./src/app.css`, `--output=./dist/styles.css`, `--cwd=/path/to/project`. Atualmente, um valor separado por espaço após uma opção longa (`--input ./src/app.css`) é ignorado sem erro, e a compilação usa os valores padrão ([#13](https://github.com/inline0/tailwindphp/issues/13)). Opções curtas recebem o valor como próximo argumento (`-i ./src/app.css`).

| Opção | Descrição | Padrão |
|---|---|---|
| `-i, --input` | Arquivo CSS de entrada; `--input=-` o lê da entrada padrão | `@import "tailwindcss"` |
| `-o, --output` | Arquivo de saída | `-` (saída padrão) |
| `-w, --watch` | Monitora alterações e recompila conforme necessário | — |
| `-m, --minify` | Otimiza e minifica a saída | — |
| `--optimize` | Documentado como “otimizar sem minificar”; atualmente minifica como `--minify` ([#9](https://github.com/inline0/tailwindphp/issues/9)) | — |
| `--cwd` | Diretório de trabalho atual | `.` |
| `-h, --help` | Exibe informações de uso | — |
| `-V, --version` | Exibe a versão | — |
| `-v, --verbose` | Exibe o rastreamento da pilha quando uma compilação falha | — |

Quando `--output` é `-` (o padrão), o CSS compilado é enviado à saída padrão, para que você possa redirecioná-lo para outro lugar. As mensagens de progresso (o aviso da versão e `Done in …ms`) são enviadas para a saída de erro padrão.

Ao contrário de `@tailwindcss/cli`, não há opção `--map`: TailwindPHP não gera mapas de origem.

## Entrada CSS

Crie um `app.css` com sua importação, tema e diretivas de Tailwind:

```css
@import "tailwindcss";

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

## O que o CLI examina

A varredura de conteúdo no CLI ainda não segue `@source` da mesma forma que `@tailwindcss/cli` ([#8](https://github.com/inline0/tailwindphp/issues/8)). Na versão atual:

- **Sem uma diretiva `@source` de arquivo** no CSS de entrada, o CLI examina recursivamente o diretório de trabalho (`--cwd`). Isso inclui `vendor/` e `node_modules/`; `.gitignore` não é consultado.
- **Com uma ou mais diretivas `@source` de arquivo**, o CLI examina recursivamente o **diretório do arquivo de entrada**. O caminho ou padrão glob da diretiva não é aplicado: `@source "../templates"` ao lado de `src/app.css` examina `src/`, não `templates/`.
- Diretivas **`@source not "…"`** são ignoradas; não excluem nada.
- **`@source inline("…")`** e **`@source not inline("…")`** funcionam conforme documentado, pois o compilador as processa diretamente.

Somente arquivos com estas extensões são lidos: `php`, `html`, `htm`, `twig`, `blade.php`, `vue`, `jsx`, `tsx`, `svelte`, `astro` e `mdx`. Os nomes das classes são obtidos dos atributos `class` e `className`, assim como em [`tw::extractCandidates()`](https://tailwindphp.inline0.dev/pt/docs/api#twextractcandidates); portanto, uma classe que aparece apenas em uma string PHP ou JavaScript não é encontrada. Force a inclusão dessas classes com `@source inline("…")`.

Até que isso seja corrigido, a configuração confiável é um arquivo de entrada CSS no topo do diretório que você quer examinar:

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

Consulte [@source](https://tailwindphp.inline0.dev/pt/docs/usage/source) para ver a sintaxe das diretivas, incluindo as formas `not` e `inline()`.

## Exemplos

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

O CLI cria o diretório de saída caso ele não exista e encerra com erro se o arquivo de entrada estiver ausente ou se os caminhos de entrada e saída forem idênticos. O modo de monitoramento verifica o arquivo de entrada e os arquivos examinados a cada 500 ms e recompila quando algum deles muda ou quando um novo arquivo aparece.

## Instalação global

Instale globalmente para usar `tailwindphp` de qualquer lugar:

```bash
composer global require tailwindphp/tailwindphp

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

Consulte [Primeiros passos](https://tailwindphp.inline0.dev/pt/docs/getting-started) para configurar o projeto e [API](https://tailwindphp.inline0.dev/pt/docs/api) para gerar CSS em tempo de execução a partir de PHP.
