ترحيل تطبيقات إلكترون إلى Deno لتقليل حجم البناء

Computing/Software4분 읽기

TuBrief 편집팀 원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다. 원본 영상: يمكن لـ Deno Desktop جعل تطبيقاتك أصغر بنسبة 70% · Better Stack

وداعاً لملفات التوزيع الضخمة

إن توزيع مئات الميجابايت من ملفات Chromium الثنائية في كل مرة تشغل فيها تطبيق إلكترون (Electron) يعد أمراً غير فعال. بالنسبة للمطور المستقل، يرتبط حجم ملف التوزيع ارتباطاً مباشراً بمعدل التثبيت. يستخدم Deno Desktop محرك عرض الويب (WebView) الأصلي لنظام التشغيل. يمكنك تقليل حجم تطبيقك الحالي الذي يبلغ 180 ميجابايت إلى حوالي 19 ميجابايت. هذا ليس مجرد تغيير تقني، بل هو عمل يهدف إلى تخفيف العبء عن بيئة التشغيل.

قائمة التحقق من سباق الترحيل

لإنهاء عملية إعادة الهيكلة في غضون 10 أيام، يجب عليك التخلي عن الهيكل الحالي.

  • بدلاً من الاعتماديات المعقدة في package.json، استخدم deno.lock لتبسيط نظام إدارة التخزين المؤقت.
  • تخلص من الأدوات الثقيلة مثل electron-builder و asar، وقم بضبط محرك البناء الداخلي لـ Deno.
  • احذف طبقات التواصل ipcMain و ipcRenderer ووحّد صلاحيات التحكم في العمليات باستخدام طريقة win.bind().

بعد إتمام هذا العمل، يمكنك تقليل وقت عملية البناء بنسبة 40%.

التحكم في اختلافات WebView حسب المنصة

تختلف محركات الويب بين أنظمة ماك وويندوز ولينكس. تختلف نتائج العرض بين WKWebView و WebView2، بل وتختلف حتى طريقة تفسير مواصفات CSS. وعلى وجه الخصوص، غالباً ما يفسد محرك WebKitGTK القديم في لينكس التخطيط.

لتقليل التباين بين المنصات، يجب عليك تضمين برامج نصية (scripts) للتصحيح في خط أنابيب التوزيع (deployment pipeline).

  1. استخدم كود إعادة تعيين CSS (CSS reset) لفرض ضبط الهوامش الافتراضية لجميع المتصفحات على 0.
  2. قم باستدعاء bindings.getPlatformMetadata() في مرحلة التمهيد لتحديد نظام التشغيل الذي يعمل حالياً.
  3. في نظام macOS، وفّر هامشاً بارتفاع 28 بكسل باستخدام عنصر حاوية (wrapper div) عند استخدام وضع ملء الشاشة بدون إطار (frameless mode) مراعاةً لمنطقة إشارات المرور، وفي ويندوز، قم بحقن فئات CSS بناءً على ما إذا تم اكتشاف الوضع الداكن.

تطبيق هذه الطريقة يقلل من تكلفة تعديل واجهة المستخدم يدوياً لكل نظام تشغيل.

تنفيذ غلاف أمني لاستدعاءات واجهة البرمجة التطبيقية (API) الأصلية

تتعرض قنوات IPC في إلكترون لحوادث أمنية متكررة. يوفر Deno Desktop أماناً أعلى من خلال نقل البيانات عبر الربط المباشر. للتحكم في وظائف نظام التشغيل بأمان، يجب عليك تنفيذ فئات الغلاف (wrapper classes) بنفسك.

  • يجب حصر عمليات إدخال وإخراج الملفات داخل مسار الحماية (sandbox) /app_sandbox_storage فقط.
  • قم بتضمين منطق منع اجتياز المسار (Path Traversal) في مُنشئ الفئة لحظر رموز .. في المسارات فوراً.
  • عند استدعاء وظائف النظام مثل الإشعارات، تأكد من أن المورد المُمرر كمعامل موجود في القائمة البيضاء واستخدم بيانات مشفرة بـ base64 فقط.

أتمتة التوزيع باستخدام GitHub Actions

لا تقم بإعداد البيئة والبناء لكل نظام تشغيل على حدة. باستخدام استراتيجية المصفوفة (matrix strategy) في GitHub Actions، يمكنك استخراج ملفات msi لويندوز، و AppImage للينكس، و dmg لماك في وقت واحد عبر التزام (commit) واحد.

  • قم ببناء إصدارات ويندوز ولينكس في بيئة ubuntu-latest، وإصدار الماك في بيئة macos-14.
  • أضف الخيار --compress=xz إلى أمر deno desktop --target لتقليل حجم الملف النهائي.
  • بالنسبة لمخرجات لينكس، اختبر ما إذا كانت تعمل فعلياً في بيئة افتراضية عن طريق تشغيل xvfb-run.

بناء هذا الخط يجعل دورة التوزيع أسرع بمرتين من البناء اليدوي. يمنحك الانتقال إلى Deno ميزتين: ملفات ثنائية خفيفة وأمان بنظام الحماية.

관련 영상

يمكن لـ Deno Desktop جعل تطبيقاتك أصغر بنسبة 70%

Better Stack6:17

커뮤니티의 다른 글

댓글

로그인하고 댓글을 남겨 보세요.

아직 댓글이 없습니다.