
# CLI

`./vendor/bin/tailwindphp` adalah port PHP dari **[@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/next/packages/%40tailwindcss-cli)** tanpa memerlukan Node.js. Fitur ini menerima opsi build yang sama, selain source map (`--map`), tetapi memindai konten dengan cara berbeda: lihat [Yang dipindai CLI](#what-the-cli-scans). Setelah `composer require tailwindphp/tailwindphp`, binari ditautkan ke `vendor/bin/`.

Jika Anda hanya memerlukan CSS saat runtime dari PHP, gunakan [API](https://tailwindphp.inline0.dev/id/docs/api) saja — CLI ditujukan untuk alur kerja build yang menulis stylesheet ke disk.

## Mulai cepat

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

## Opsi

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

Berikan nilai untuk opsi panjang dengan `=`: `--input=./src/app.css`, `--output=./dist/styles.css`, `--cwd=/path/to/project`. Nilai yang dipisahkan spasi setelah opsi panjang (`--input ./src/app.css`) saat ini diabaikan tanpa pesan kesalahan, dan build menggunakan nilai default ([#13](https://github.com/inline0/tailwindphp/issues/13)). Opsi pendek menerima nilai sebagai argumen berikutnya (`-i ./src/app.css`).

| Opsi | Deskripsi | Default |
|---|---|---|
| `-i, --input` | File CSS masukan; `--input=-` membacanya dari stdin | `@import "tailwindcss"` |
| `-o, --output` | File keluaran | `-` (stdout) |
| `-w, --watch` | Pantau perubahan dan bangun ulang bila diperlukan | — |
| `-m, --minify` | Optimalkan dan minifikasi keluaran | — |
| `--optimize` | Didokumentasikan sebagai "optimalkan tanpa minifikasi"; saat ini melakukan minifikasi seperti `--minify` ([#9](https://github.com/inline0/tailwindphp/issues/9)) | — |
| `--cwd` | Direktori kerja saat ini | `.` |
| `-h, --help` | Tampilkan informasi penggunaan | — |
| `-V, --version` | Cetak versi | — |
| `-v, --verbose` | Cetak stack trace saat build gagal | — |

Saat `--output` adalah `-` (nilai default), CSS yang telah dikompilasi ditulis ke stdout sehingga Anda dapat menyalurkannya ke tempat lain. Pesan progres (banner versi dan `Done in …ms`) ditulis ke stderr.

Berbeda dengan `@tailwindcss/cli`, tidak ada opsi `--map`: TailwindPHP tidak menghasilkan source map.

## Masukan CSS

Buat `app.css` dengan impor, tema, dan direktif Tailwind Anda:

```css
@import "tailwindcss";

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

## Yang dipindai CLI

Pemindaian konten di CLI belum mengikuti `@source` seperti yang dilakukan `@tailwindcss/cli` ([#8](https://github.com/inline0/tailwindphp/issues/8)). Pada rilis saat ini:

- **Tanpa direktif file `@source`** di CSS masukan, CLI memindai direktori kerja (`--cwd`) secara rekursif. Ini mencakup `vendor/` dan `node_modules/`; `.gitignore` tidak diperiksa.
- **Dengan satu atau beberapa direktif file `@source`**, CLI memindai **direktori file masukan** secara rekursif. Jalur atau glob dalam direktif tidak diterapkan: `@source "../templates"` di sebelah `src/app.css` memindai `src/`, bukan `templates/`.
- Direktif **`@source not "…"`** dilewati; direktif ini tidak mengecualikan apa pun.
- **`@source inline("…")`** dan **`@source not inline("…")`** berfungsi sesuai dokumentasi karena compiler menanganinya sendiri.

Hanya file dengan ekstensi berikut yang dibaca: `php`, `html`, `htm`, `twig`, `blade.php`, `vue`, `jsx`, `tsx`, `svelte`, `astro`, dan `mdx`. Nama kelas diambil dari atribut `class` dan `className`, sama seperti [`tw::extractCandidates()`](https://tailwindphp.inline0.dev/id/docs/api#twextractcandidates), jadi kelas yang hanya muncul dalam string PHP atau JavaScript tidak akan ditemukan. Paksa kelas seperti itu dengan `@source inline("…")`.

Sampai masalah itu diperbaiki, pengaturan yang andal adalah file CSS masukan di bagian teratas direktori yang ingin Anda pindai:

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

Lihat [@source](https://tailwindphp.inline0.dev/id/docs/usage/source) untuk sintaks direktif, termasuk bentuk `not` dan `inline()`.

## Contoh

```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 membuat direktori keluaran jika belum ada, dan keluar dengan pesan kesalahan jika file masukan tidak ditemukan atau jalur masukan dan keluaran sama. Mode pantau memeriksa file masukan dan file yang dipindai setiap 500 ms, lalu membangun ulang saat ada perubahan atau file baru muncul.

## Instalasi global

Instal secara global agar dapat menggunakan `tailwindphp` dari mana saja:

```bash
composer global require tailwindphp/tailwindphp

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

Lihat [Memulai](https://tailwindphp.inline0.dev/id/docs/getting-started) untuk penyiapan proyek dan [API](https://tailwindphp.inline0.dev/id/docs/api) untuk pembuatan CSS saat runtime dari PHP.
