الخطوات
-
1
ارفع موقعك إلى مستودع GitHub
يجب أن يكون كودك المصدري في مستودع GitHub. إذا كنت تنشر مجلد بناء جاهز (مثل
dist/)، إما أن تُضيف ناتج البناء إلى فرع مخصص أو تستخدم GitHub Actions للبناء تلقائيًا (مشروح لاحقًا).bashgit init git add . git commit -m "Initial commit" git remote add origin https://github.com/your-user/your-repo.git git push -u origin main -
2
فعّل Pages في إعدادات المستودع
انتقل إلى Settings → Pages في مستودعك. تحت Source، اختر Deploy from a branch، ثم حدد الفرع (عادةً
main) والمجلد (/ (root)أو/docs). اضغط Save. يبدأ GitHub نشرًا فوريًا ويعرض رابط الموقع المباشر — عادةًhttps://your-user.github.io/your-repo/— في غضون 60 ثانية تقريبًا.bash# بعد التفعيل، تحقق من حالة النشر: gh run list --workflow pages-build-deployment -
3
امنع معالجة Jekyll غير المرغوب فيها
افتراضيًا، تُمرر GitHub Pages موقعك عبر Jekyll الذي يتجاهل أي ملف أو مجلد يبدأ اسمه بشرطة سفلية (
_app،_next،__mocks__). إذا كانت أطر العمل تُنتج ملفات كهذه، أضف ملف.nojekyllإلى جذر فرع النشر.bash# في جذر مستودعك (أو dist/ قبل النشر): touch .nojekyll git add .nojekyll git commit -m "Disable Jekyll processing" git push -
4
انشر إطار عمل مبني باستخدام GitHub Actions
لـ Vite أو Next.js static export أو أي إطار يحتاج خطوة بناء، استخدم GitHub Actions للبناء والنشر بدلًا من إضافة مجلد
dist/إلى الـ commit. أنشئ.github/workflows/deploy.yml— هذا هو النهج الموصى به لأي موقع غير بسيط.yamlname: Deploy to GitHub Pages on: push: branches: [main] permissions: contents: read pages: write id-token: write jobs: deploy: environment: name: github-pages url: ${{ steps.deploy.outputs.page_url }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Node uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - run: npm run build # outputs to dist/ - uses: actions/upload-pages-artifact@v3 with: path: dist - id: deploy uses: actions/deploy-pages@v4 -
5
حوّل مصدر Pages إلى GitHub Actions
عند استخدام الـ workflow أعلاه، عد إلى Settings → Pages → Source وحوّله من "Deploy from a branch" إلى GitHub Actions. وإلا سيقوم GitHub بنشر الفرع والـ workflow معًا مما يُسبب تعارضات.
bash# تأكد من رابط النشر بعد انتهاء الـ workflow: gh run list --limit 5 -
6
أضف نطاقًا مخصصًا
لتقديم الموقع من
www.example.comبدلًا من رابط*.github.ioالافتراضي: أضف ملفCNAMEيحتوي نطاقك إلى جذر فرع النشر، ثم أنشئ سجل CNAME في DNS يشير إلىyour-user.github.io. يُفعَّل HTTPS تلقائيًا عبر Let's Encrypt — يستغرق عادةً بضع دقائق.bash# أنشئ ملف CNAME echo 'www.example.com' > CNAME git add CNAME && git commit -m "Add custom domain" && git push # سجل DNS المطلوب لدى مزود النطاق: # Type: CNAME # Name: www # Value: your-user.github.io -
7
اعرف حدود المنصة
GitHub Pages سخي للمشاريع الشخصية لكنه غير مصمم للتطبيقات الإنتاجية عالية الحركة. تذكر هذه الحدود: الموقع المنشور يجب أن يكون 1 GB أو أقل؛ توصي GitHub بالبقاء تحت حد نطاق ترددي تقريبي 100 GB/شهر؛ وهناك حد 10 عمليات بناء/ساعة لكل مستودع. لا كود من جانب الخادم، ولا قواعد بيانات — ساكن فقط.
bash# تحقق من حجم موقعك المبني محليًا: du -sh dist/ # أي شيء يتجاوز ~500 MB علامة تحذير لموقع ساكن.
نصائح ومحاذير
- لمحفظة شخصية على <code>username.github.io</code>، أنشئ مستودعًا باسم <code>username.github.io</code> بالضبط — سيقدمه GitHub تلقائيًا من الجذر بدون مسار فرعي.
- إذا كان تطبيقك أحادي الصفحة يُظهر 404 على الروابط العميقة، أضف <code>404.html</code> يُعيد التوجيه إلى <code>index.html</code> — تُقدمه GitHub Pages للمسارات الغائبة.
- Cache-busting مجاني: تُقدم GitHub Pages الملفات بـ ETag قوي. أجبر على إعادة التحميل بإضافة query string أو باستخدام أسماء ملفات مُشفَّرة بالمحتوى (تفعل Vite ذلك تلقائيًا).
- حزمة npm اسمها <code>gh-pages</code> (<code>npm install --save-dev gh-pages</code>) تُؤتمت رفع مجلد <code>dist/</code> إلى فرع <code>gh-pages</code> دون الحاجة لـ workflow في Actions.
خاتمة
يُغطي GitHub Pages الغالبية العظمى من احتياجات الاستضافة الساكنة بتكلفة صفرية. للـ HTML البسيط، فعّله في الإعدادات بنقرتين. لأطر مثل Vite أو Next.js، يمنحك الـ workflow أعلاه CI/CD تلقائيًا دون الحاجة لحساب طرف ثالث. أضف نطاقًا مخصصًا ويُعالَج HTTPS تلقائيًا. القيد الوحيد الحقيقي هو الاشتراط الساكن فقط — في اللحظة التي تحتاج فيها قاعدة بيانات أو منطقًا من جانب الخادم، انتقل إلى منصة مثل Vercel أو Render أو VPS.