
# CLI

`./vendor/bin/tailwindphp` on PHP-porttaus ohjelmasta **[@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/next/packages/%40tailwindcss-cli)**, eikä Node.js-vaatimusta ole. Se käyttää samoja build-asetuksia lähdekarttoja (`--map`) lukuun ottamatta, mutta sisällön skannaus toimii eri tavalla: katso [Mitä CLI skannaa](#what-the-cli-scans). `composer require tailwindphp/tailwindphp`-vaiheen jälkeen binääri linkitetään osaksi `vendor/bin/`-tiedostoa.

Jos tarvitset ajonaikana vain CSS-toiminnon paketista PHP, käytä sen sijaan [API](https://tailwindphp.inline0.dev/fi/docs/api)-pakettia — CLI on tarkoitettu build-vaiheen työnkulkuihin, joissa tyylitiedosto kirjoitetaan levylle.

## Pika-aloitus

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

## Asetukset

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

Anna pitkille valitsimille arvo muodossa `=`: `--input=./src/app.css`, `--output=./dist/styles.css`, `--cwd=/path/to/project`. Pitkän valitsimen jälkeen välilyönnillä erotettu arvo (`--input ./src/app.css`) ohitetaan tällä hetkellä virheettä, ja build käyttää oletusarvoja ([#13](https://github.com/inline0/tailwindphp/issues/13)). Lyhyet valitsimet saavat arvon seuraavana argumenttina (`-i ./src/app.css`).

| Valitsin | Kuvaus | Oletus |
|---|---|---|
| `-i, --input` | Syöte-CSS-tiedosto; `--input=-` lukee sen stdin-virrasta | `@import "tailwindcss"` |
| `-o, --output` | Tulostiedosto | `-` (stdout) |
| `-w, --watch` | Seuraa muutoksia ja rakentaa tarvittaessa uudelleen | — |
| `-m, --minify` | Optimoi ja pienentää tulosteen | — |
| `--optimize` | Dokumentaation mukaan "optimoi pienentämättä"; pienentää tällä hetkellä kuten `--minify` ([#9](https://github.com/inline0/tailwindphp/issues/9)) | — |
| `--cwd` | Nykyinen työhakemisto | `.` |
| `-h, --help` | Näyttää käyttöohjeet | — |
| `-V, --version` | Tulostaa version | — |
| `-v, --verbose` | Tulostaa pinon jäljityksen, jos build epäonnistuu | — |

Kun `--output` on `-` (oletusarvo), käännetty CSS kirjoitetaan stdout-virtaan, joten voit ohjata sen putkella muualle. Edistymisviestit (versiobanneri ja `Done in …ms`) kirjoitetaan stderr-virtaan.

Toisin kuin `@tailwindcss/cli`-komennossa, `--map`-valitsinta ei ole: TailwindPHP ei luo lähdekarttoja.

## Syöte-CSS

Luo `app.css`, jossa on Tailwind-tuonti, teema ja direktiivit:

```css
@import "tailwindcss";

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

## Mitä CLI skannaa

CLI-komennon sisällön skannaus ei vielä noudata `@source`-määritystä samalla tavalla kuin `@tailwindcss/cli` tekee ([#8](https://github.com/inline0/tailwindphp/issues/8)). Nykyisessä julkaisussa:

- **Jos syöte-CSS-tiedostossa ei ole `@source`-direktiiviä**, CLI skannaa työhakemiston (`--cwd`) rekursiivisesti. Mukaan otetaan myös `vendor/` ja `node_modules/`; `.gitignore`-asetusta ei tarkisteta.
- **Jos tiedostossa on vähintään yksi `@source`-direktiivi**, CLI skannaa rekursiivisesti **syötetiedoston hakemiston**. Direktiivin polkua tai glob-kuviota ei käytetä: `src/app.css`-tiedoston vieressä oleva `@source "../templates"` skannaa `src/`-hakemiston, ei `templates/`-hakemistoa.
- **`@source not "…"`-direktiivit** ohitetaan; ne eivät sulje mitään pois.
- **`@source inline("…")`- ja `@source not inline("…")`-direktiivit** toimivat dokumentaation mukaisesti, koska kääntäjä käsittelee ne itse.

Vain näillä tiedostopäätteillä varustetut tiedostot luetaan: `php`, `html`, `htm`, `twig`, `blade.php`, `vue`, `jsx`, `tsx`, `svelte`, `astro` ja `mdx`. Luokkien nimet poimitaan `class`- ja `className`-attribuuteista samalla tavalla kuin [`tw::extractCandidates()`](https://tailwindphp.inline0.dev/fi/docs/api#twextractcandidates)-toiminnossa, joten pelkästään PHP- tai JavaScript-merkkijonossa esiintyvä luokka jää löytymättä. Lisää tällaiset luokat pakolla käyttämällä `@source inline("…")`-direktiiviä.

Kunnes ongelma on korjattu, luotettava ratkaisu on sijoittaa syöte-CSS-tiedosto skannattavan hakemiston ylimmälle tasolle:

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

Katso [@source](https://tailwindphp.inline0.dev/fi/docs/usage/source)-direktiivin syntaksi, mukaan lukien `not`- ja `inline()`-muodot.

## Esimerkkejä

```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 luo tuloshakemiston, jos sitä ei ole, ja päättyy virheeseen, jos syötetiedosto puuttuu tai syöte- ja tulostuspolut ovat samat. Tarkkailutila tarkistaa syötetiedoston ja skannatut tiedostot 500 ms välein ja rakentaa uudelleen, jos jokin niistä muuttuu tai uusi tiedosto ilmestyy.

## Asennus globaalisti

Asenna globaalisti, jotta voit käyttää `tailwindphp`-komentoa mistä tahansa:

```bash
composer global require tailwindphp/tailwindphp

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

Katso [Aloitusopas](https://tailwindphp.inline0.dev/fi/docs/getting-started) projektin käyttöönottoa varten ja [API](https://tailwindphp.inline0.dev/fi/docs/api) ajonaikaista CSS-muodostusta varten paketista PHP.
