الأصول العامة (مجلد public/)
يحتوي مجلد public/ في جذر تطبيقك على ملفات ثابتة — صور وأيقونات وخطوط وأي أصول أخرى يحتاجها تطبيقك وقت التشغيل. تُدرج هذه الملفات تلقائيًا في عمليات البناء، وتُزامَن أثناء وضع التطوير، وتُرفَع إلى الخادم.
الملفات الموضوعة في public/ هي:
- متاحة للعامة — بمجرد مزامنتها إلى الخادم، تُقدَّم الأصول عبر عنوان URL عام. لا حاجة إلى مصادقة للوصول إليها.
- متاحة في المكوّنات الأمامية — استخدم عناوين الأصول لعرض الصور أو الأيقونات أو أي وسائط داخل مكوّنات React لديك.
- متاحة في الدوال المنطقية — أشِر إلى عناوين الأصول في رسائل البريد الإلكتروني أو استجابات واجهات البرمجة أو أي منطق على جهة الخادم.
- مستخدمة لبيانات تعريف السوق — يشير حقلا
logoUrlوscreenshotsفيdefineApplication()إلى ملفات من هذا المجلد (مثلpublic/logo.png). تُعرَض هذه عند نشر تطبيقك في السوق. - تُزامَن تلقائيًا في وضع التطوير — عند إضافة ملف في
public/أو تحديثه أو حذفه، تتم مزامنته إلى الخادم تلقائيًا. لا حاجة لإعادة التشغيل. - مضمَّنة في عمليات البناء — يقوم
yarn twenty buildبتجميع جميع الأصول العامة ضمن مخرجات التوزيع.
الوصول إلى الأصول العامة باستخدام getPublicAssetUrl
استخدم المساعد getPublicAssetUrl من twenty-sdk للحصول على العنوان الكامل لملف في دليل public/ لديك. يعمل ذلك في كلٍ من الدوال المنطقية والمكوّنات الأمامية.
في دالة منطقية:
src/logic-functions/send-invoice.ts
src/front-components/company-card.tsx
path نسبية إلى مجلد public/ الخاص بتطبيقك. كلٌّ من getPublicAssetUrl('logo.png') وgetPublicAssetUrl('public/logo.png') يُحلاّن إلى العنوان نفسه — تتم إزالة بادئة public/ تلقائيًا إن وُجدت.
استخدام حِزَم npm
يمكنك تثبيت واستخدام أي حزمة npm في تطبيقك. يتم تجميع كلٍ من الدوال المنطقية والمكوّنات الأمامية باستخدام esbuild، والذي يُضمّن جميع التبعيات ضمن المخرجات — لا حاجة إلىnode_modules وقت التشغيل.
تثبيت حزمة
src/logic-functions/fetch-data.ts
src/front-components/chart.tsx
كيف يعمل التجميع
تستخدم خطوة البناء أداة esbuild لإنتاج ملف واحد مستقل لكل دالة منطقية ولكل مكوّن أمامي. تُضمَّن جميع الحزم المستوردة داخل الحزمة. الدوال المنطقية تعمل في بيئة Node.js. الوحدات المدمجة في Node (fs وpath وcrypto وhttp وغيرها) متاحة ولا تحتاج إلى تثبيت.
المكوّنات الأمامية تعمل ضمن Web Worker. وحدات Node المدمجة غير متاحة — المتاح فقط واجهات برمجة المتصفّح وحِزَم npm التي تعمل في بيئة المتصفّح.
كلتا البيئتين تحتويان على twenty-client-sdk/core وtwenty-client-sdk/metadata كوحدات متاحة مُسبقًا — لا تُضمَّن هذه ضمن الحزم بل تُحلّ وقت التشغيل بواسطة الخادم.
اختبار تطبيقك
يوفّر SDK واجهات برمجة قابلة للتنفيذ برمجيًا تمكّنك من بناء تطبيقك ونشره وتثبيته وإلغاء تثبيته من شيفرة الاختبار. بالاقتران مع Vitest وعملاء واجهة البرمجة مضبوطي الأنواع، يمكنك كتابة اختبارات تكامل تتحقّق من أن تطبيقك يعمل من البداية إلى النهاية مقابل خادم Twenty حقيقي.إعداد
يتضمّن التطبيق المُولَّد بالقالب بالفعل Vitest. إذا أعددته يدويًا، فثبّت التبعيات:vitest.config.ts في جذر تطبيقك:
vitest.config.ts
src/__tests__/setup-test.ts
واجهات SDK البرمجية
يُصدِّر المسار الفرعيtwenty-sdk/cli دوالًا يمكنك استدعاؤها مباشرةً من شيفرة الاختبار:
| دالة | الوصف |
|---|---|
appBuild | بناء التطبيق واختياريًا حزم ملف tarball |
appDeploy | رفع ملف tarball إلى الخادم |
appInstall | تثبيت التطبيق على مساحة العمل النشطة |
appUninstall | إلغاء تثبيت التطبيق من مساحة العمل النشطة |
success: boolean وعلى إمّا data أو error.
كتابة اختبار تكامل
إليك مثالًا كاملًا يبني التطبيق وينشره ويثبّته، ثم يتحقّق من ظهوره في مساحة العمل:src/__tests__/app-install.integration-test.ts
تشغيل الاختبارات
تأكّد من تشغيل خادم Twenty المحلي لديك، ثم:التحقق من الأنواع
يمكنك أيضًا تشغيل التحقق من الأنواع على تطبيقك دون تشغيل الاختبارات:tsc --noEmit ويبلغ عن أي أخطاء في الأنواع.
مرجع CLI
بالإضافة إلىdev وbuild وadd وtypecheck، يوفّر CLI أوامر لتنفيذ الدوال وعرض السجلات وإدارة تثبيتات التطبيقات.
تنفيذ الدوال (yarn twenty exec)
تشغيل دالة منطقية يدويًا دون تشغيلها عبر HTTP أو cron أو حدث قاعدة بيانات:
عرض سجلات الدوال (yarn twenty logs)
بثّ سجلات التنفيذ لدوال تطبيقك المنطقية:
يختلف هذا عن
yarn twenty server logs، الذي يعرض سجلات حاوية Docker. يعرض yarn twenty logs سجلات تنفيذ دوال تطبيقك من خادم Twenty.إلغاء تثبيت تطبيق (yarn twenty uninstall)
أزل تطبيقك من مساحة العمل النشطة:
إدارة الريموتات
الريموت هو خادم Twenty يتصل به تطبيقك. أثناء الإعداد، تُنشئ أداة إنشاء الهيكل واحدًا لك تلقائيًا. يمكنك إضافة ريموتات أخرى أو التبديل بينها في أي وقت.~/.twenty/config.json.
التكامل المستمر (CI) باستخدام GitHub Actions
تولّد أداة إنشاء الهيكل سير عمل GitHub Actions جاهزًا للاستخدام في.github/workflows/ci.yml. يشغّل اختبارات التكامل لديك تلقائيًا عند كل دفع إلى main وعلى طلبات السحب.
سير العمل:
- يجلب الشيفرة الخاصة بك
- يشغّل خادم Twenty مؤقتًا باستخدام الإجراء
twentyhq/twenty/.github/actions/spawn-twenty-docker-image - يثبّت التبعيات باستخدام
yarn install --immutable - يشغّل
yarn testمع حقنTWENTY_API_URLوTWENTY_API_KEYمن مخرجات الإجراء
.github/workflows/ci.yml
spawn-twenty-docker-image خادم Twenty عابرًا مباشرة في المشغّل ويُخرِج تفاصيل الاتصال. يتم توفير السر GITHUB_TOKEN تلقائيًا من قِبل GitHub.
لتثبيت إصدار محدّد من Twenty بدلًا من latest، غيّر متغير البيئة TWENTY_VERSION في أعلى سير العمل.