Yayına alma
Siteyi Cloudflare Pages, Netlify, Docker ya da Node üzerinde barındır, doğru ortam değerlerini ayarla ve alan adını bağla.
Render modunu seç
.env içinde RENDER_MODE değerini ayarla. Varsayılan değer çoğu siteye uyar.
| Mod | Sayfalar ne zaman üretilir | Barındırma | Ne zaman |
|---|---|---|---|
| static (varsayılan) | build anında | Cloudflare Pages, Netlify, nginx | çoğu site |
| hybrid | build anında, artı sunucu uçları | Node.js | sitenin iletişim formu gibi kendi sunucu uçları gerekiyorsa |
| server | her istekte | CDN arkasında Node.js | binlerce sayfa ya da dakikalar içinde güncellenmesi gereken içerik |
Sayfa kodu her modda aynıdır. Şablonun bir sunucuya ihtiyacı varsa README.md dosyasında yazar.
Önce yerelde build al
pnpm build
Bunun için Sanity bağlantısı adımındaki Sanity ayarların gerekir. Build bilgisayarında geçiyorsa host da aynı çıktıyı üretir.
Statik: Cloudflare Pages ya da Netlify
Gizli reponu host’a bağla ve şu build ayarlarını kullan:
| Ayar | Değer |
|---|---|
| Build komutu | pnpm build |
| Çıktı klasörü | dist/client |
| Node.js sürümü | 22 |
Build ortam değerlerini ekle. Bunları .env dosyandan kopyala:
PUBLIC_SITE_URL=https://example.com
PUBLIC_SANITY_PROJECT_ID=abc12345
PUBLIC_SANITY_DATASET=production
PUBLIC_SANITY_API_VERSION=2026-08-01
Build, host’un yönlendirme ve başlık dosyalarını (_redirects, _headers) senin için yazar; bunları elle düzenleme.
Statik: Docker (nginx)
docker build -f Dockerfile.static \
--build-arg PUBLIC_SITE_URL=https://example.com \
--build-arg PUBLIC_SANITY_PROJECT_ID=abc12345 \
-t my-site .
docker run -p 8080:8080 my-site
İmaj, nginx’i root yetkisi olmadan 8080 portunda çalıştırır. Sağlık kontrolü /api/health adresindedir.
Hybrid ya da server: Docker (Node.js)
docker build -f Dockerfile.node \
--build-arg RENDER_MODE=hybrid \
--build-arg PUBLIC_SITE_URL=https://example.com \
--build-arg PUBLIC_SANITY_PROJECT_ID=abc12345 \
-t my-site .
docker run -p 3000:3000 my-site
Sunucu 3000 portunu dinler ve sağlık kontrolü /api/health adresindedir. Yeni bir sürüm yayına alınırken süren isteklerin tamamlanabilmesi için konteynere en az 10 saniyelik bir durdurma bekleme süresi (stop grace period) ver.
Docker olmadan doğrudan build alıp başlatmak için:
pnpm build
HOST=0.0.0.0 pnpm start
Build anında sabitlenen değerler
RENDER_MODE ve PUBLIC_ ile başlayan her değer siteye build sırasında gömülür. Build ve çalışma zamanı ayarlarını ayıran platformlarda bunları build değeri olarak ekle. Yalnızca çalışma zamanında ayarlarsan build sessizce varsayılan değerleri kullanır. Bu değerlerden birini değiştirdikten sonra yeniden build al.
Yayınla ve yeniden build et
Statik bir site, yeni içeriği yeniden build edildikten sonra gösterir. Her yayında yeniden build almak için:
- Host’unda bir deploy hook oluştur (Cloudflare Pages da Netlify da sunar) ve URL’ini kopyala.
- sanity.io/manage üzerinde projeni aç → API → Webhooks ve bir webhook ekle:
- URL: deploy hook adresi
- Trigger on: create, update, delete
- Drafts: kapalı
- Projection:
{_id, _type}
hybrid ve server modlarında webhook’u bunun yerine https://example.com/api/revalidate adresine yönlendir ve sırrını (secret) .env dosyandaki SANITY_WEBHOOK_SECRET değeri yap. hybrid modunda, bir yayının yeniden build tetiklemesi için sunucuda DEPLOY_HOOK_URL değerini de ayarla. .env.example içindeki yorumlar her host için gereken değerleri listeler.
Alan adını bağla
- Alan adını host’unun ayarlarına ekle ve DNS talimatlarını izle.
PUBLIC_SITE_URLdeğerinihttps://ile birlikte alan adına ayarla ve yeniden build al.- Sanity’nin bu alan adından gelen istekleri kabul etmesini sağla:
pnpm sanity:setup --project abc12345 --site-url https://example.com
Statik sitede iletişim formları
Statik bir sitenin kendi sunucu ucu yoktur. Şablonun bir iletişim formu içeriyorsa README.md ve .env.example dosyaları seçenekleri gösterir: formu harici bir form servisine gönder ya da RENDER_MODE=hybrid moduna geç.