
# 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/ar/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)). في الإصدار الحالي:

- **في غياب توجيه ملف `@source`** ضمن ملف الإدخال CSS، يفحص 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/ar/docs/api#twextractcandidates)؛ لذا لا يُعثر على صنف لا يظهر إلا في سلسلة PHP أو JavaScript. أدرج هذه الأصناف قسرًا باستخدام `@source inline("…")`.

إلى أن يُصلح ذلك، الإعداد الموثوق هو وضع ملف إدخال CSS في أعلى الدليل الذي تريد فحصه:

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

راجع [@source](https://tailwindphp.inline0.dev/ar/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/ar/docs/getting-started) لإعداد المشروع، و[API](https://tailwindphp.inline0.dev/ar/docs/api) لإنشاء CSS أثناء التشغيل من PHP.
