# هيكل الدليل {#directory-structure}

على الرغم من أن مشاريع Tuist تُستخدم عادةً لتحل محل مشاريع Xcode، إلا أنها لا
تقتصر على حالة الاستخدام هذه. تُستخدم مشاريع تويست أيضًا لإنشاء أنواع أخرى من
المشاريع، مثل حزم SPM، والقوالب، والمكونات الإضافية، والمهام. يصف هذا المستند
بنية مشاريع تويست وكيفية تنظيمها. في أقسام لاحقة، سنغطي كيفية تعريف القوالب
والإضافات والمهام.

## مشاريع تويست القياسية {#standard-tuist-projects}

مشاريع تويست هي **النوع الأكثر شيوعًا من المشاريع التي يتم إنشاؤها بواسطة
تويست.** تُستخدم لبناء التطبيقات والأطر والمكتبات وغيرها. على عكس مشاريع Xcode،
يتم تعريف مشاريع Tuist بلغة Swift، مما يجعلها أكثر مرونة وأسهل في الصيانة.
مشاريع تويست هي أيضًا أكثر وضوحًا، مما يجعلها أسهل في الفهم والاستدلال. تُظهر
البنية التالية مشروع تويست نموذجي يولد مشروع Xcode:

```bash
Tuist.swift
Tuist/
  Package.swift
  ProjectDescriptionHelpers/
Projects/
  App/
    Project.swift
  Feature/
    Project.swift
Workspace.swift
```

- **دليل تويست:** هذا الدليل له غرضان. أولاً، يشير إلى **حيث يوجد جذر المشروع**.
  وهذا يسمح ببناء مسارات متعلقة بجذر المشروع، وكذلك تشغيل أوامر تويست من أي دليل
  داخل المشروع. ثانيًا، إنه حاوية للملفات التالية:
  - **مساعدو وصف المشروع:** يحتوي هذا الدليل على كود Swift الذي تتم مشاركته عبر
    جميع ملفات البيان. يمكن لملفات البيان `استيراد ProjectDescriptionHelpers`
    لاستخدام الشيفرة المحددة في هذا الدليل. مشاركة الشيفرة مفيدة لتجنب التكرار
    وضمان الاتساق عبر المشاريع.
  - **Package.swift:** يحتوي هذا الملف على تبعيات Swift Package لتويست لدمجها باستخدام مشاريع وأهداف Xcode (مثل [CocoaPods] (https://cococapods)}) القابلة للتكوين والتحسين. تعرف على المزيد <LocalizedLink href="/guides/features/projects/dependencies">هنا</LocalizedLink>.

- **الدليل الجذر**: الدليل الجذر لمشروعك الذي يحتوي أيضًا على الدليل `Tuist`.
  - <LocalizedLink href="/guides/features/projects/manifests#tuistswift"><bold>Tuist.swift:</bold></LocalizedLink>
    يحتوي هذا الملف على تهيئة لـ Tuist التي تتم مشاركتها عبر جميع المشاريع
    ومساحات العمل والبيئات. على سبيل المثال، يمكن استخدامه لتعطيل الإنشاء
    التلقائي للمخططات، أو لتحديد هدف نشر المشاريع.
  - <LocalizedLink href="/guides/features/projects/manifests#workspace-swift"><bold>مساحة
    العمل.سويفت:</bold></LocalizedLink> يمثل هذا البيان مساحة عمل Xcode. يُستخدم
    لتجميع المشاريع الأخرى ويمكنه أيضًا إضافة ملفات ومخططات إضافية.
  - <LocalizedLink href="/guides/features/projects/manifests#project-swift"><bold>مشروع.سويفت:</bold></LocalizedLink>
    يمثل هذا البيان مشروع Xcode. يُستخدم لتحديد الأهداف التي هي جزء من المشروع
    وتوابعها.

عند التفاعل مع المشروع أعلاه، تتوقع الأوامر أن تجد إما ملف `Workspace.swift` أو
ملف `Project.swift` في دليل العمل أو الدليل المشار إليه عبر العلامة `- المسار`.
يجب أن يكون البيان في دليل أو دليل فرعي لدليل يحتوي على دليل `Tuist` الذي يمثل
جذر المشروع.

> [!TIP]
> سمحت مساحات عمل Xcode بتقسيم المشاريع إلى مشاريع Xcode متعددة لتقليل احتمالية
> تعارضات الدمج. إذا كان هذا ما كنت تستخدم مساحات العمل من أجله، فلن تحتاج إليها
> في Tuist. يُنشئ تويست تلقائيًا مساحة عمل تحتوي على مشروع ومشاريع تبعياته.


## حزمة سويفت <Badge type="warning" text="beta" /> {#swift-package-badge-typewarning-textbeta-}

يدعم Tuist أيضًا مشاريع حزم SPM. إذا كنت تعمل على حزمة SPM، فلن تحتاج إلى تحديث
أي شيء. يلتقط تويست تلقائيًا على الجذر الخاص بك `Package.swift` وتعمل جميع ميزات
تويست كما لو كان `Project.swift` البيان.

للبدء، قم بتشغيل `tuist install` و `tuist generate` في حزمة SPM الخاصة بك. يجب أن يحتوي مشروعك الآن على جميع المخططات والملفات نفسها التي ستراها في تكامل Xcode SPM الفانيليا. ومع ذلك، يمكنك الآن أيضًا تشغيل <LocalizedLink href="/guides/features/cache">`tuist cache`</LocalizedLink> وستحصل على معظم تبعيات ووحدات SPM الخاصة بك مجمعة مسبقًا، مما يجعل الإنشاءات اللاحقة سريعة للغاية.
