All checks were successful
Deploy / deploy (push) Successful in 7m33s
Prod VPS'te next build sırasında makineyi kilitleyen OOM'un çözümü:
- serverExternalPackages'a @google/genai, @anthropic-ai/sdk, resend eklendi;
Turbopack artık genai'nin protobufjs/google-auth-library/ws zincirini
derlemiyor (c2aba25 sonrası OOM'un tetiği buydu).
- Docker build'inde (BUILD_KAYNAK_KISITLI=1) bellek kısıtları: Turbopack 1.5G
hedefi, statik üretim tek worker × 4 sayfa, prerender source map kapalı.
- Dockerfile: runner'a tam node_modules kopyası kaldırıldı (imaj ~1.9G→966M),
pnpm store + .next/cache BuildKit cache mount'ları, açık COPY listesi,
V8 heap sınırı.
- scripts/standalone-linkleri-onar.sh: Turbopack ESM external'ların kök
node_modules symlink'ini nft trace'ine yazmıyor; eksik linkler build sonrası
tamamlanmazsa runtime MODULE_NOT_FOUND ile düşer.
- ci.yaml: build bellek sınırlı buildx docker-container builder'da (2200m,
max-parallelism 1; BuildKit --memory bayrağını yok sayıyor), deploy
up -d --no-build ile ayrıldı, temizlik if: always() ile her koşuda.
- compose: app'e mem_limit 1g + oom_score_adj -600.
- Kullanılmayan simple-icons ve @react-pdf/renderer kaldırıldı; npm artığı
package-lock.json silindi.
Doğrulama: imaj 2 CPU/2GiB VM'de sıfırdan build edildi, konteynerde ana
sayfa/universite 200 ve üç ESM external import OK.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
77 lines
1.9 KiB
JSON
77 lines
1.9 KiB
JSON
{
|
|
"name": "kolaytercih",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"build": "next build",
|
|
"start": "next start",
|
|
"lint": "eslint",
|
|
"ingest": "tsx scripts/ingest.ts",
|
|
"refresh": "tsx scripts/refresh.ts",
|
|
"detay": "tsx scripts/detay.ts",
|
|
"logolar": "tsx scripts/logo-indir.ts",
|
|
"db:push": "drizzle-kit push",
|
|
"tadimlik": "tsx scripts/tadimlik-uret.ts"
|
|
},
|
|
"dependencies": {
|
|
"@anthropic-ai/sdk": "^0.112.4",
|
|
"@cds/city": "^1.1.0",
|
|
"@google/genai": "^2.15.0",
|
|
"@libsql/client": "^0.17.4",
|
|
"@number-flow/react": "^0.6.2",
|
|
"better-auth": "^1.6.23",
|
|
"better-sqlite3": "^12.11.1",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"drizzle-orm": "^0.45.2",
|
|
"iyzipay": "^2.0.69",
|
|
"lenis": "^1.3.25",
|
|
"lucide-react": "^1.25.0",
|
|
"marked": "^18.0.7",
|
|
"mermaid": "^11.16.0",
|
|
"motion": "^12.42.2",
|
|
"next": "16.2.10",
|
|
"next-themes": "^0.4.6",
|
|
"radix-ui": "^1.6.3",
|
|
"react": "19.2.4",
|
|
"react-dom": "19.2.4",
|
|
"react-markdown": "^10.1.0",
|
|
"react-use-measure": "^2.1.7",
|
|
"remark-breaks": "^4.0.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"resend": "^6.18.0",
|
|
"shiki": "^4.3.1",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.6.0",
|
|
"turkey-map-react": "^2.0.5",
|
|
"tw-animate-css": "^1.4.0",
|
|
"use-stick-to-bottom": "^1.1.6",
|
|
"vaul": "^1.1.2",
|
|
"zod": "^4.4.3"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/postcss": "^4",
|
|
"@types/better-sqlite3": "^7.6.13",
|
|
"@types/iyzipay": "^2.0.3",
|
|
"@types/node": "^20",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"drizzle-kit": "^0.31.10",
|
|
"eslint": "^9",
|
|
"eslint-config-next": "16.2.10",
|
|
"shadcn": "^4.13.1",
|
|
"tailwindcss": "^4",
|
|
"tsx": "^4.23.1",
|
|
"typescript": "^5"
|
|
},
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"better-sqlite3",
|
|
"esbuild",
|
|
"sharp",
|
|
"unrs-resolver"
|
|
]
|
|
}
|
|
}
|