الانتقال إلى المحتوى الرئيسي

نظرة عامة

استخدم CLI المستقلة مع --json لبناء تطبيقك ونشره وتثبيته وإلغاء تثبيته من شيفرة الاختبار. ثبّتها على مستوى النظام باستخدام npm install -g twenty. بالاقتران مع Vitest وعملاء واجهة البرمجة مضبوطي الأنواع، يمكنك كتابة اختبارات تكامل تتحقّق من أن تطبيقك يعمل من البداية إلى النهاية مقابل خادم Twenty حقيقي.

استخدام حِزَم 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 التي تعمل في بيئة المتصفّح. لاحظ أن الـ sandbox يطبّق نموذج DOM جزئيًا، لذلك قد تتمكّن الحزمة من البناء بنجاح ولكنها قد تفشل أثناء وقت التشغيل؛ راجع القيود الحالية. كلتا البيئتين تحتويان على twenty-client-sdk/core وtwenty-client-sdk/metadata كوحدات متاحة مُسبقًا — لا تُضمَّن هذه ضمن الحزم بل تُحلّ وقت التشغيل بواسطة الخادم. يمكن للمكوّنات الأمامية أيضًا مشاركة التبعيات من خلال حزمة التبعيات المشتركة. تُبنَى الحزم المدرجة في حقل frontComponentSharedDependencies في ملف package.json الخاص بالتطبيق مرة واحدة في ملف منفصل ويتم تحميلها منه أثناء وقت التشغيل بدلًا من تضمينها داخل كل مكوّن، لذا فإن المكوّن الذي يستورد حزمًا مشتركة فقط لا يحمل تقريبًا أي شيفرة تبعيات خاصة به.

إعداد

يتضمّن التطبيق المُولَّد بالقالب بالفعل Vitest. إذا أعددته يدويًا، فثبّت التبعيات:
أنشئ vitest.config.ts في جذر تطبيقك:
vitest.config.ts
يتضمن القالب المُنشأ src/__tests__/run-twenty.ts، وهي أداة مساعدة لعملية فرعية تستدعي CLI العمومية وتُحلّل نتيجتها بتنسيق JSON. اضبط TWENTY_CLI على مسار مطلق لملف قابل للتنفيذ لاستخدام إصدار CLI محلي. وهي ترث TWENTY_API_URL وTWENTY_API_KEY؛ لا حاجة إلى ملف إعدادات في الدليل الرئيسي. استخدم هذه الأداة المساعدة للإعداد والتنظيف:
src/__tests__/global-setup.ts
شغّل اختبارات التكامل على مساحة عمل مؤقتة: يقوم الإعداد بتثبيت التطبيق ويقوم التنظيف بإلغاء تثبيته. لتغطية تثبيت السجل، شغّل app publish --private متبوعًا بـ app install بدلًا من app apply --create.

كتابة اختبار تكامل

استخدم twenty-client-sdk لفحص البيانات والبيانات الوصفية بعد اكتمال إعداد CLI:
بالنسبة إلى بيان، اقرأ data.manifest من twenty app build --json. لاختبارات الدوال المنشورة، استخدم طفرة executeOneLogicFunction الخاصة بعميل البيانات الوصفية مع رمز مستخدم مميز. حدّد الدالة ضمن معرّف التطبيق المثبّت قبل استدعائها.

تشغيل الاختبارات

تأكّد من تشغيل خادم Twenty المحلي لديك، ثم:
أو في وضع المراقبة أثناء التطوير:

التحقق من الأنواع

يمكنك أيضًا تشغيل التحقق من الأنواع على تطبيقك دون تشغيل الاختبارات:
يتحقق هذا من tsconfig.json الخاص بتطبيقك باستخدام مترجم TypeScript المثبت لديه، دون إنشاء ملفات، ويبلّغ عن أي أخطاء في الأنواع. كما تتضمن التطبيقات المُنشأة بالهيكل برنامج نصي yarn typecheck يشمل ملفات الاختبار (tsconfig.spec.json) أيضًا.

التكامل المستمر (CI) باستخدام GitHub Actions

تولّد أداة إنشاء الهيكل سير عمل جاهزًا للاستخدام في .github/workflows/ci.yml. عند كل دفع إلى الفرع main وكل طلب سحب، تُنشئ الأداة خادم Twenty مؤقتًا في بيئة التشغيل (عبر الإجراء twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test)، ثم تشغِّل الأوامر yarn lint وyarn typecheck وyarn test:unit وyarn test مع ضبط المتغيرين TWENTY_API_URL وTWENTY_API_KEY للإشارة إلى ذلك الخادم. لا تُطلَب أي أسرار، ويمكنك تثبيت إصدار الخادم عبر متغير البيئة TWENTY_VERSION في أعلى سير العمل. راجع قسم النشر → التكامل/التسليم المستمران الآليان للاطلاع على شرح كامل لثلاثة مسارات العمل التي تم إنشاؤها تلقائياً (ci.yml، وخط أنابيب النشر cd.yml، وpublish.yml للنشر على npm).