npx create-twenty-app كما يلي:
الملفات الرئيسية
| ملف / مجلد | الغرض |
|---|---|
src/application-config.ts | مطلوب. ملف الإعداد الرئيسي لتطبيقك. |
src/default-role.ts | دور افتراضي يتحكّم بما يمكن لدوال المنطق الوصول إليه. |
src/constants/universal-identifiers.ts | معرّفات UUID وبيانات تعريف يتم توليدها تلقائيًا (اسم العرض، الوصف). |
src/__tests__/ | اختبارات تكامل (إعداد + اختبار مثال). |
public/ | أصول ثابتة (صور، خطوط) تُقدَّم مع تطبيقك. |
تنظيم الملفات متروك لك. المجلدات المذكورة أعلاه هي أعراف متَّبعة — يكتشف SDK الكيانات عبر تحليل AST على استدعاءات
export default defineEntity(...) بغض النظر عن مكان وجود الملف.التبعيات
ينبغي أن تكون حزمتا SDK الخاصتان بـ Twenty ضمنdevDependencies، وليس ضمن dependencies:
- توفّر
twenty-sdkأداةtwentyCLI وأدوات البناء/إنشاء الهياكل (scaffolding). يعمل فقط أثناء التطوير ووقت البناء، ولا يتم استيراده أبدًا في وقت تشغيل تطبيقك المنشور. - يتم استيراد
twenty-client-sdkبواسطة كود تطبيقك (CoreApiClient،MetadataApiClient،RestApiClient)؛ لكن Twenty توفّره في وقت التشغيل — حيث تحصل عليه دوال المنطق من طبقة SDK مُولَّدة، وتحصل عليه مكوّنات الواجهة من وحدات يتم تقديمها من الخادم. يُستخدَم الإصدار المثبّت لديك فقط لفحص الأنواع (typechecking) ولبناء النشر (deploy-time build)، لذا لا يلزم أبدًا أن يتم تضمينه في حزمة النشر.
dependencies يؤدي إلى سحبها داخل حزمة وقت تشغيل التطبيق المثبّت، حيث تكون عبئًا زائدًا بلا فائدة. يُطلق twenty build تحذيرًا عندما تكون أيٌّ منهما ما تزال مدرجة ضمن dependencies.
أضِف تبعيات وقت التشغيل الخاصة بتطبيقك (المكتبات التي تستوردها دوال المنطق لديك فعلًا في وقت التشغيل) ضمن dependencies كالمعتاد.