Files

4.2 KiB

النشر على Vercel

توفّر Vercel أسهل تجربة نشر للمواقع الثابتة.

النشر بنقرة واحدة

Deploy with Vercel

النشر اليدوي

الخطوة 1: عمل Fork للمستودع

اعمل Fork لـ bentopdf/bentopdf إلى حسابك على GitHub.

الخطوة 2: الاستيراد إلى Vercel

  1. انتقل إلى vercel.com/new
  2. اختر المستودع المتفرع الخاص بك
  3. اضبط المشروع:
الإعداد القيمة
Framework Preset Vite
Build Command npm run build
Output Directory dist
Install Command npm install

الخطوة 3: متغيرات البيئة (اختياري)

أضف هذه عند الحاجة:

المتغير الوصف
SIMPLE_MODE اضبطه على true لواجهة مبسطة
VITE_BRAND_NAME اسم العلامة التجارية المخصص (يحل محل "BentoPDF")
VITE_BRAND_LOGO مسار الشعار نسبةً إلى public/ (مثل images/my-logo.svg)
VITE_FOOTER_TEXT نص التذييل/حقوق النشر المخصص
VITE_DEFAULT_LANGUAGE لغة الواجهة الافتراضية (مثل fr وde وes)

الخطوة 4: النشر

انقر على "Deploy" وانتظر اكتمال البناء.

نطاق مخصص

  1. انتقل إلى إعدادات مشروعك
  2. افتح "Domains"
  3. أضف نطاقك المخصص
  4. اضبط DNS كما هو موضح

القيود

::: warning الملفات الكبيرة للدوال عديمة الخادم (serverless) في Vercel حد قدره 50MB. بما أن BentoPDF موقع ثابت، فلا ينبغي أن يؤثر ذلك عليك، لكن وحدات WASM كبيرة (~100MB إجمالًا). تأكد من تقديمها من مجلد /public. :::

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

انتهاء مهلة البناء

إذا انتهت مهلة البناء، فجرّب:

// vercel.json
{
  "buildCommand": "npm run build",
  "outputDirectory": "dist"
}

خطأ 404 عند التحديث

أضف ملف vercel.json لتوجيه SPA:

{
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}

تحويل Word/ODT/Excel إلى PDF لا يعمل

تتطلب تحويلات LibreOffice WASM وجود SharedArrayBuffer، الذي يحتاج إلى ترويسات الاستجابة هذه على جميع الصفحات:

  • Cross-Origin-Embedder-Policy: require-corp
  • Cross-Origin-Opener-Policy: same-origin

كما تحتاج ملفات .wasm.gz و.data.gz المضغوطة مسبقًا إلى Content-Encoding: gzip ليفك المتصفح ضغطها.

أضف هذه إلى vercel.json:

{
  "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }],
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        { "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" },
        { "key": "Cross-Origin-Opener-Policy", "value": "same-origin" },
        { "key": "Cross-Origin-Resource-Policy", "value": "cross-origin" }
      ]
    },
    {
      "source": "/libreoffice-wasm/soffice.wasm.gz",
      "headers": [
        { "key": "Content-Type", "value": "application/wasm" },
        { "key": "Content-Encoding", "value": "gzip" }
      ]
    },
    {
      "source": "/libreoffice-wasm/soffice.data.gz",
      "headers": [
        { "key": "Content-Type", "value": "application/octet-stream" },
        { "key": "Content-Encoding", "value": "gzip" }
      ]
    }
  ]
}

للتحقق، افتح وحدة تحكم DevTools ونفّذ console.log(window.crossOriginIsolated)، ويجب أن تعيد true.