4.2 KiB
النشر على Vercel
توفّر Vercel أسهل تجربة نشر للمواقع الثابتة.
النشر بنقرة واحدة
النشر اليدوي
الخطوة 1: عمل Fork للمستودع
اعمل Fork لـ bentopdf/bentopdf إلى حسابك على GitHub.
الخطوة 2: الاستيراد إلى Vercel
- انتقل إلى vercel.com/new
- اختر المستودع المتفرع الخاص بك
- اضبط المشروع:
| الإعداد | القيمة |
|---|---|
| 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" وانتظر اكتمال البناء.
نطاق مخصص
- انتقل إلى إعدادات مشروعك
- افتح "Domains"
- أضف نطاقك المخصص
- اضبط 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-corpCross-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.