Skip to main content

مقدمة

تكون بناءات React للإنتاج مُصغَّرة (minified)، لذا يبدو تتبّع المكدس (stack trace) القادم من مستخدم حقيقي هكذا:
عندما ترفع خرائط المصدر (source maps) الخاصة ببنائك إلى Lerix، تعيد لوحة التحكم كل إطار إلى كودك الأصلي، مثل src/components/Chat.tsx:142، وتعرض الأسطر المحيطة به. تُرفَع الخرائط بشكل خاص وتُحذف من مخرجات البناء قبل النشر. لا تُقدَّم علناً أبداً، لذا يبقى كودك المصدري خاصاً.
أكمِل تثبيت React أولاً. يتطلّب تعيين الإصدار (release) الحزمة @lerix-dev/lerix-core بالإصدار 1.1.0 أو أحدث.

1. فعّل خرائط المصدر

ولّد خرائط مصدر مخفية في vite.config:
vite.config.ts
يولّد الخيار 'hidden' ملفات .map دون إضافة تعليق //# sourceMappingURL إلى ملفات JavaScript المنشورة، فلا يحاول المتصفح تحميلها أبداً. مجلد المخرجات هو dist.
شغّل بناء الإنتاج وتأكّد من ظهور ملفات .js.map بجانب الحزم.

2. أنشئ مفتاح API خاصاً

يحتاج رفع خرائط المصدر إلى مفتاح خاص، منفصل عن مفتاح المشروع العام الذي يستخدمه تطبيقك.
  1. افتح مشروعك في لوحة تحكم Lerix.
  2. اذهب إلى Project settings ← API keys.
  3. أنشئ مفتاحاً بصلاحية Upload source maps (أو Full access).
هذا المفتاح سرّي. خزّنه كسرّ (secret) في نظام CI ولا تضعه أبداً في كود العميل ولا ترفعه إلى مستودعك.

3. ارفع الخرائط بعد كل بناء

بعد البناء وقبل النشر، شغّل أداة Lerix CLI على مخرجات البناء:
شغّلها من مجلد مشروعك. تجد الأداة مخرجات البناء تلقائياً (dist (Vite) أو build (Create React App)) وتستخدم version من package.json كإصدار. ولتحديدهما بنفسك: npx @lerix-dev/lerix-cli upload dist --release 1.4.0. ترفع الأداة كل ملف *.js.map في المجلد (وتتجاهل node_modules وخرائط CSS)، ثم تحذف ملفات .map من مخرجات البناء كي لا تُنشر أبداً. إذا فشل أي رفع، تُبقي الأداة الخرائط وتخرج بالرمز 1، لتتمكّن من إعادة الخطوة. تتطلّب الأداة Node.js بالإصدار 18.17 أو أحدث.

الرفع مع كل بناء

بدلاً من تشغيل الأمر بنفسك، ثبّت الأداة في مشروعك واجعل npm يشغّلها بعد كل بناء:
package.json
الآن كل npm run build يرفع الخرائط. الخيار --optional يُبقي البناء المحلي يعمل: على جهاز لا يحوي LERIX_SECRET_KEY (جهاز المطوّر)، يُتخطّى الرفع بدلاً من إفشال البناء، مع حذف ملفات .map كالمعتاد. عيّن المفاتيح في نظام الـ CI أو خادم البناء حيث يُنفَّذ بناء الإنتاج.
لا يشغّل pnpm ولا Yarn 2+ سكربتات postbuild. اربط الأمر بدلاً من ذلك: "build": "vite build && lerix upload --optional".

الخيارات

يمكن تعيين كل خيار أيضاً عبر متغير بيئة.

4. مرّر الإصدار نفسه إلى الـ SDK

عيّن release في خيارات LerixProvider إلى القيمة التي مرّرتها إلى --release:
يطابق Lerix الخرائط حسب اسم ملف السكربت. أسماء الأجزاء (chunks) التي يولّدها الـ bundler مشتقّة من محتواها (content-hashed)، لذا فهي فريدة لكل بناء، ويفضّل Lerix الخرائط من الإصدار نفسه. تظل المطابقة تعمل إذا حذفت release، لكن يُنصح بتعيينه. كما يحلّ الإصدار محلّ رقم الإصدار 0.0.0 الذي كان يظهر سابقاً لتطبيقات الويب.
استخدم القيمة نفسها في الموضعين دون تعديلها يدوياً: معرّف commit في git أو قيمة version من package.json كلاهما خيار جيد.

مثال: GitHub Actions

يبني سير العمل هذا تطبيق Vite، ثم يرفع الخرائط، ثم ينشر. أضِف LERIX_API_KEY وLERIX_PROJECT_ID وLERIX_SECRET_KEY كأسرار (secrets) في المستودع.
.github/workflows/deploy.yml
ثم اقرأ القيمة في تطبيقك:
مع Create React App، سمِّ المتغير REACT_APP_LERIX_RELEASE واقرأه من process.env.REACT_APP_LERIX_RELEASE بدلاً من ذلك.

ما تراه في لوحة التحكم

تعرض الأخطاء الجديدة الملف والسطر والدالة الأصلية، مع الكود المحيط. انقر Show minified لرؤية المكدس كما أرسله المتصفح تماماً. يتلقّى المساعد الذكي وقضايا GitHub وخادم MCP جميعهم المكدس المقروء أيضاً.
  • لا تُحوَّل إلا الأخطاء المُبلَّغ عنها بعد رفع الخرائط. تبقى الأخطاء الأقدم بمكدسها المُصغَّر.
  • يحتفظ Lerix بأحدث 5,000 خريطة لكل مشروع.
  • الحد الأقصى لحجم الخريطة الواحدة 50 MB.

استكشاف الأخطاء وإصلاحها