انتقل إلى المحتوى

النشر على Vercel ​

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

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

Deploy with Vercel

النشر اليدوي ​

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

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

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

  1. انتقل إلى vercel.com/new
  2. اختر المستودع المتفرع الخاص بك
  3. اضبط المشروع:
الإعدادالقيمة
Framework PresetVite
Build Commandnpm run build
Output Directorydist
Install Commandnpm 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 كما هو موضح

القيود ​

الملفات الكبيرة

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

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

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

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

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

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

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

json
{
  "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:

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.

مرخّص بترخيصين: AGPL-3.0 والترخيص التجاري.