צינור ה-CI/CD שלך עבור JAMstack תקוע?
בניית ה-React SPA שלך אורכת 15 דקות, לאחר הפריסה קישורים נשברים עקב הפניות שגויות, ותצוגות מקדימות עבור pull requests צריכות להיות מוגדרות ידנית? נתקלנו בזה עשרות פעמים. הצוות שלנו (5+ שנות ניסיון עם Netlify ו-50+ פרויקטים מוגדרים) פותר את הבעיות האלה תוך כמה שעות. אנו מבטיחים: לאחר ההגדרה שלנו, זמן הבנייה הממוצע יירד ל-2–3 דקות, ותצוגות מקדימות של ענפים יופיעו תוך דקה.
אנחנו מהנדסים שעובדים עם Netlify, Vercel ו-Cloudflare Pages כל יום. נגדיר פריסה turnkey: מחיבור ראשוני של המאגר ועד לפריסת production עם דומיין מותאם אישית, SSL וניטור.
אילו בעיות אנו פותרים עם פריסת Netlify
שגיאות בנייה עקב אי-תאימות סביבה
גרסת Node.js שגויה, מטמון npm עמוס, או סקריפטים של בנייה המשתמשים בתלות גלובלית. ב-netlify.toml אנו קובעים במדויק את גרסת ה-Node, NPM_FLAGS והסביבה: NODE_VERSION = "20", NPM_FLAGS = "--prefer-offline".
פריסה איטית וחריגה ממגבלות
בנייה סטנדרטית ללא מטמון יכולה לקחת 10+ דקות. אנו משתמשים ב-Netlify Large Media לתמונות ומטמון node_modules בין בניות. להלן השוואה בין מגבלות Free ו-Pro:
| פרמטר | Free | Pro |
|---|---|---|
| דקות בנייה/חודש | 300 | 1000 (ניתן להוסיף) |
| פסק זמן לפונקציות | 10 שניות | 26 שניות |
| רוחב פס/חודש | 100 GB | 500 GB |
| בניות במקביל | 1 | 5 |
Netlify מבטל אוטומטית בנייה אם היא נמשכת יותר מ-15 דקות. — תיעוד Netlify
הפניות וכותרים שגויים
SPAs דורשות הפניית כל הנתיבים ל-index.html, אחרת 404. פרוקסי API נשכחים לעיתים קרובות. תצורת ה-netlify.toml שלנו מכסה מקרים אלה:
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
[[redirects]]
from = "/api/*"
to = "https://api.example.com/:splat"
status = 200
force = true כיצד אנו מגדירים פריסה תוך 30 דקות (מקרה אמיתי)
פרויקט: SPA על Vue 3 עם טופס יצירת קשר ו-API מותאם אישית על Netlify Functions. במקור נפרס דרך GitHub Pages — ידני, ללא תצוגות מקדימות. מה עשינו:
- יצרנו netlify.toml עם הפרדת הקשרים (production, branch-deploy, deploy-preview).
- הגדרנו את הפונקציה contact.ts לשליחת אימיילים דרך Resend.
- חיברנו את GitHub Actions לפריסה — רק ב-push ל-main ו-develop.
- הפעלנו Netlify Forms כגיבוי לאיסוף נתונים.
תוצאה: פריסה אוטומטית, תצוגה מקדימה ל-PR תוך דקה, חיסכון של 4 שעות עבודה ידנית בשבוע. Netlify מוגדר פי 2–3 מהר יותר מ-Vercel עבור אתרים סטטיים.
תצורת netlify.toml מלאה
קובץ תצורת netlify.toml המלא
[build]
command = "npm run build"
publish = "dist"
functions = "netlify/functions"
[build.environment]
NODE_VERSION = "20"
NPM_FLAGS = "--prefix=/dev/null"
# SPA: редирект всех маршрутов на index.html
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
# Прокси API
[[redirects]]
from = "/api/*"
to = "https://api.example.com/:splat"
status = 200
force = true
# Кастомные заголовки
[[headers]]
for = "/*"
[headers.values]
X-Frame-Options = "DENY"
X-Content-Type-Options = "nosniff"
Referrer-Policy = "strict-origin-when-cross-origin"
[[headers]]
for = "/assets/*"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"
# Split testing (A/B)
[context.deploy-preview]
command = "npm run build:preview"
[context.branch-deploy]
command = "npm run build:staging" Netlify Functions לטופס יצירת קשר
// netlify/functions/contact.ts
import type { Handler, HandlerEvent } from '@netlify/functions';
export const handler: Handler = async (event: HandlerEvent) => {
if (event.httpMethod !== 'POST') {
return {
statusCode: 405,
body: 'Method Not Allowed'
};
}
const { name, email, message } = JSON.parse(event.body || '{}');
// Отправка через Nodemailer или Resend
await sendEmail({ name, email, message });
return {
statusCode: 200,
body: JSON.stringify({ success: true }),
headers: {
'Content-Type': 'application/json'
},
};
}; חלופה: טפסים מובנים של Netlify
מתאים כאשר אין צורך באימות מותאם אישית או אינטגרציית CRM.
<form name="contact" method="POST" data-netlify="true" netlify-honeypot="bot-field">
<input type="hidden" name="form-name" value="contact">
<p class="hidden">
<label>Don't fill this: <input name="bot-field"></label>
</p>
<input type="text" name="name" required>
<input type="email" name="email" required>
<textarea name="message" required></textarea>
<button type="submit">Отправить</button>
</form>ההגשות זמינות ב-Netlify Dashboard → Forms. ניתן להגדיר שם התראות (אימייל, Slack webhook).
GitHub Actions + Netlify CLI
---
name: Deploy to Netlify
on:
push:
branches: [main, develop]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
- name: Deploy to Netlify
run: |
npx netlify-cli deploy \
--dir=dist \
--site=${{ secrets.NETLIFY_SITE_ID }} \
--auth=${{ secrets.NETLIFY_AUTH_TOKEN }} \
${{ github.ref == 'refs/heads/main' && '--prod' || '' }}
---
מדוע Netlify Functions אינן מתאימות לחישובים כבדים?
מגבלת הזמן (10 שניות בתוכנית Free, 26 ב-Pro) מונעת שימוש בהן לעיבוד וידאו, יצירת PDF או משימות ETL מורכבות. במקרים כאלה, אנו מחברים שירותים חיצוניים: AWS Lambda, Google Cloud Functions או תורים ייעודיים. Netlify Functions אידיאליות לפרוקסי API קלים, שליחת אימיילים ו-webhooks.
Netlify לעומת Vercel לעומת Cloudflare Pages: מה לבחור?
| קריטריון | Netlify | Vercel | Cloudflare Pages |
|---|---|---|---|
| תמיכה ב-Serverless | Functions (10-26 שניות) | Edge Functions (50ms) | Workers (10ms CPU) |
| טפסים מובנים | כן | לא | לא |
| תצורה | netlify.toml (גמיש) | vercel.json (פשוט יותר) | wrangler.toml |
| סטאק אופטימלי | Static, SPA, Gatsby | Next.js, Nuxt | JAMstack, Workers |
| מגבלת בנייה חינמית | 300 דקות/חודש | 6000 דקות/חודש | 500 בניות/חודש |
Netlify מנצח בפשטות הגדרת הטפסים וההפניות, Vercel בביצועי Edge Functions, Cloudflare ברשת הגלובלית ובתמחור.
תהליך
- ניתוח — בחינת המאגר הנוכחי, סקריפטים של בנייה, תלות.
- עיצוב — קביעת הקשרים (production, staging, preview), משתני סביבה, פונקציות.
- יישום — כתיבת netlify.toml, פונקציות, CI/CD (GitHub Actions / GitLab CI).
- בדיקה — פריסה לסביבת preview, בדיקת הפניות, כותרים וזמן בנייה.
- השקה — החלפת DNS, בדיקת SSL, ניטור לוגים.
ציר זמן ועלות
הגדרת פרויקט טיפוסי (SPA/static) — 4–8 שעות. עבור פרויקטים עם פונקציות ואינטגרציות מותאמות אישית — עד 16 שעות. העלות מחושבת בנפרד לאחר ביקורת על המאגר שלך. בממוצע, הפרויקט מחזיר את עצמו על ידי האצת הפריסה פי 3–5. חיסכון בזמן פריסה ידנית יכול להגיע ל-$800–1200 לחודש בתעריף מפתח ממוצע.
מה כלול בעבודה
- תצורת netlify.toml עובדת עם הפרדת הקשרים.
- הגדרת דומיין Netlify מותאם אישית ו-SSL אוטומטי.
- פיתוח עד 5 Netlify Functions (טפסי יצירת קשר, פרוקסי API).
- אינטגרציה עם GitHub Actions / GitLab CI.
- תיעוד תמיכה (כיצד להוסיף פונקציה חדשה, לשנות משתנים).
- שבועיים של תמיכה חינמית לאחר הפריסה.
למה להפקיד בידינו את ההגדרה?
- 5+ שנות ניסיון עם פרויקטים של Netlify ו-JAMstack.
- 50+ הגדרות פריסה מוצלחות עבור React, Vue, Angular ו-Gatsby.
- מומחים מוסמכים ב-Netlify ו-CI/CD (GitHub Actions, GitLab CI).
- הבטחת יציבות — לאחר הפריסה, כל הפרמטרים קבועים ואינם משתנים ללא ידיעתך.
צור קשר לביקורת על הפריסה הנוכחית שלך — נזהה אזורי בעיה ונציע אופטימיזציה. הזמן הגדרת Netlify turnkey ושכח מפריסות ידניות לנצח.







