{"id":37786,"date":"2026-01-15T13:30:48","date_gmt":"2026-01-15T10:30:48","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/"},"modified":"2026-01-15T13:30:48","modified_gmt":"2026-01-15T10:30:48","slug":"serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/","title":{"rendered":"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm"},"content":{"rendered":"<h2>Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm<\/h2>\n<p>Serverless mimariler, geli\u015ftiricilere h\u0131z, \u00f6l\u00e7eklenebilirlik ve maliyet etkinli\u011fi sunarken, baz\u0131 \u00f6zel zorluklar\u0131 da beraberinde getirir. \u00d6zellikle esbuild gibi modern bundler&#8217;lar ve Prisma gibi g\u00fc\u00e7l\u00fc ORM ara\u00e7lar\u0131 bir araya geldi\u011finde, paketleme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri tam bir kabusa d\u00f6n\u00fc\u015febilir. Bu makalede, bu \u00fc\u00e7l\u00fcn\u00fcn yaratt\u0131\u011f\u0131 paketleme sorunlar\u0131n\u0131, nedenlerini ve sonunda bu karma\u015f\u0131k d\u00fc\u011f\u00fcm\u00fc nas\u0131l \u00e7\u00f6zd\u00fc\u011f\u00fcm\u00fc ad\u0131m ad\u0131m anlataca\u011f\u0131m. Amac\u0131m, benim ya\u015fad\u0131\u011f\u0131m zorluklar\u0131 sizin ya\u015famaman\u0131z i\u00e7in kapsaml\u0131 bir rehber sunmak.<\/p>\n<h2>Kabusun Ba\u015flang\u0131c\u0131: Neden Bu Kadar Zor?<\/h2>\n<p>Serverless, esbuild ve Prisma \u00fc\u00e7l\u00fcs\u00fcn\u00fcn bir araya gelmesi, ba\u015flang\u0131\u00e7ta kula\u011fa harika bir kombinasyon gibi gelir. esbuild&#8217;in inan\u0131lmaz h\u0131z\u0131, Serverless&#8217;\u0131n esnekli\u011fi ve Prisma&#8217;n\u0131n tip g\u00fcvenli veritaban\u0131 eri\u015fimi&#8230; Ancak bu potansiyel, genellikle paketleme ve da\u011f\u0131t\u0131m a\u015famas\u0131nda beklenmedik engellerle kar\u015f\u0131la\u015f\u0131r. Peki, bu zorluklar nereden kaynaklan\u0131yor?<\/p>\n<h3>Serverless Ortam\u0131n\u0131n K\u0131s\u0131tlamalar\u0131<\/h3>\n<p>AWS Lambda gibi sunucusuz ortamlar, fonksiyonlar\u0131n\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in belirli k\u0131s\u0131tlamalar getirir. En belirgin olanlar\u0131, paket boyutu limitleri (s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f 50MB, s\u0131k\u0131\u015ft\u0131r\u0131lmam\u0131\u015f 250MB) ve \u00e7al\u0131\u015fma zaman\u0131 ortam\u0131n\u0131n (runtime environment) belirli bir yap\u0131ya sahip olmas\u0131d\u0131r. Fonksiyonunuzun ihtiya\u00e7 duydu\u011fu t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n bu s\u0131n\u0131rlar i\u00e7inde olmas\u0131 ve do\u011fru yollardan eri\u015filebilir olmas\u0131 gerekir. \u00d6zellikle yerel ba\u011f\u0131ml\u0131l\u0131klar (native dependencies) veya \u00e7al\u0131\u015fma zaman\u0131nda dinamik olarak y\u00fcklenen mod\u00fcller bu noktada sorun yarat\u0131r.<\/p>\n<h3>esbuild&#8217;in H\u0131z\u0131n\u0131n Bedeli: Paketleme Zorluklar\u0131<\/h3>\n<p>esbuild, JavaScript\/TypeScript projelerini inan\u0131lmaz bir h\u0131zla paketleyen, Go ile yaz\u0131lm\u0131\u015f bir bundler&#8217;d\u0131r. Bu h\u0131z\u0131, genellikle her \u015feyi tek bir dosyaya (veya az say\u0131da dosyaya) derleyerek ve gereksiz kodlar\u0131 eleyerek elde eder. Ancak bu agresif optimizasyon yakla\u015f\u0131m\u0131, \u00f6zellikle \u00e7al\u0131\u015fma zaman\u0131nda dinamik olarak y\u00fcklenen dosyalar veya platforma \u00f6zel ikili dosyalar (binaries) s\u00f6z konusu oldu\u011funda sorunlara yol a\u00e7ar. esbuild, varsay\u0131lan olarak bu t\u00fcr dosyalar\u0131 bundle&#8217;a dahil etmez \u00e7\u00fcnk\u00fc onlar\u0131 &#8220;kullan\u0131lmayan kod&#8221; olarak alg\u0131layabilir.<\/p>\n<h3>Prisma&#8217;n\u0131n Yap\u0131s\u0131 ve Ba\u011f\u0131ml\u0131l\u0131klar\u0131<\/h3>\n<p>Prisma, di\u011fer ORM&#8217;lerden farkl\u0131 olarak, veritaban\u0131 etkile\u015fimleri i\u00e7in bir <code>query-engine<\/code> kullan\u0131r. Bu motor, projenizin <code>node_modules\/@prisma\/client<\/code> dizininde, kulland\u0131\u011f\u0131n\u0131z platforma (\u00f6rn. <code>linux-arm64-openssl-3.0.x<\/code>) \u00f6zel olarak derlenmi\u015f ikili bir dosya olarak bulunur. Prisma client&#8217;\u0131, \u00e7al\u0131\u015fma zaman\u0131nda bu motoru dinamik olarak y\u00fcklemeye \u00e7al\u0131\u015f\u0131r. Serverless ortam\u0131nda, bu dinamik y\u00fckleme mekanizmas\u0131n\u0131n do\u011fru yolu bulmas\u0131 ve motorun paketlenmi\u015f Lambda fonksiyonunuz i\u00e7inde mevcut olmas\u0131 kritik \u00f6neme sahiptir. Ayr\u0131ca, Prisma&#8217;n\u0131n <code>node_modules<\/code> i\u00e7indeki di\u011fer yard\u0131mc\u0131 dosyalar\u0131 ve \u015fema dosyas\u0131 (<code>schema.prisma<\/code>) da do\u011fru \u015fekilde paketlenmelidir.<\/p>\n<h2>Geleneksel Yakla\u015f\u0131mlar ve Neden Ba\u015far\u0131s\u0131z Oldular<\/h2>\n<p>Bu sorunlarla ilk kar\u015f\u0131la\u015ft\u0131\u011f\u0131mda, do\u011fal olarak bilinen veya ilk akla gelen \u00e7\u00f6z\u00fcmleri denedim. Ancak her biri, Serverless + esbuild + Prisma kombinasyonunun kendine \u00f6zg\u00fc zorluklar\u0131 kar\u015f\u0131s\u0131nda yetersiz kald\u0131.<\/p>\n<h3><code>serverless-plugin-include-dependencies<\/code> Denemeleri<\/h3>\n<p><code>serverless-plugin-include-dependencies<\/code> eklentisi, Serverless projelerinde <code>node_modules<\/code> klas\u00f6r\u00fcn\u00fc paketlemeye yard\u0131mc\u0131 olan pop\u00fcler bir ara\u00e7t\u0131r. \u0130lk ba\u015fta bu eklentinin t\u00fcm sorunumu \u00e7\u00f6zece\u011fini d\u00fc\u015f\u00fcnd\u00fcm. <code>serverless.yml<\/code> dosyama ekledim ve umutla deploy ettim. Ancak, esbuild&#8217;in zaten kendi ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi oldu\u011fu ve Prisma&#8217;n\u0131n \u00f6zel ikili dosyalar\u0131yla bu eklentinin tam olarak nas\u0131l etkile\u015fime girdi\u011fi belirsizdi. Sonu\u00e7 olarak, fonksiyonlar\u0131m ya \u00e7ok b\u00fcy\u00fck oldu ya da Prisma motorunu bulamad\u0131\u011f\u0131 i\u00e7in \u00e7al\u0131\u015fma zaman\u0131nda hata verdi. esbuild&#8217;in <code>external<\/code> ba\u011f\u0131ml\u0131l\u0131klar\u0131 ve <code>serverless-esbuild<\/code> eklentisinin kendi paketleme mant\u0131\u011f\u0131yla \u00e7ak\u0131\u015ft\u0131\u011f\u0131 durumlar da oldu.<\/p>\n<h3><code>npm prune<\/code> ve <code>yarn install --production<\/code> \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>Paket boyutunu k\u00fc\u00e7\u00fcltmek i\u00e7in genellikle <code>npm prune --production<\/code> veya <code>yarn install --production<\/code> gibi komutlar kullan\u0131l\u0131r. Bu komutlar, sadece \u00fcretim ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 tutarak geli\u015ftirme ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 siler. Bu yakla\u015f\u0131m, genel <code>node_modules<\/code> boyutunu azaltmada etkili olsa da, Prisma&#8217;n\u0131n \u00e7al\u0131\u015fma zaman\u0131nda ihtiya\u00e7 duydu\u011fu platforma \u00f6zel <code>query-engine<\/code> ikili dosyas\u0131n\u0131 veya di\u011fer yard\u0131mc\u0131 dosyalar\u0131n\u0131 yanl\u0131\u015fl\u0131kla silme riski ta\u015f\u0131r. Ayr\u0131ca, esbuild&#8217;in zaten bundle&#8217;lad\u0131\u011f\u0131 ba\u011f\u0131ml\u0131l\u0131klarla \u00e7ak\u0131\u015farak gereksiz i\u015f y\u00fck\u00fc yaratabilir.<\/p>\n<h3>Manuel Kopyalama ve <code>node_modules<\/code> Y\u00f6netimi<\/h3>\n<p>\u00c7aresizlik i\u00e7inde, Prisma&#8217;n\u0131n ihtiya\u00e7 duydu\u011fu dosyalar\u0131 manuel olarak kopyalamay\u0131 veya belirli <code>node_modules<\/code> alt klas\u00f6rlerini do\u011frudan <code>serverless.yml<\/code>&#8216;deki <code>package.include<\/code> direktifleriyle dahil etmeyi denedim. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-yaml\">package:\n  include:\n    - node_modules\/@prisma\/client\/**\n    - node_modules\/.prisma\/client\/**\n    - schema.prisma<\/pre>\n<p><\/code><\/p>\n<p>Bu y\u00f6ntem, belirli bir dereceye kadar i\u015fe yarasa da, olduk\u00e7a k\u0131r\u0131lgand\u0131. Prisma s\u00fcr\u00fcm g\u00fcncellemelerinde veya farkl\u0131 platformlarda (yerel geli\u015ftirme vs. Lambda) farkl\u0131l\u0131klar oldu\u011funda sorunlar ortaya \u00e7\u0131kt\u0131. Ayr\u0131ca, bu manuel yakla\u015f\u0131m, esbuild'in optimizasyon yeteneklerini tam olarak kullanamad\u0131\u011f\u0131 i\u00e7in paket boyutunu gere\u011finden fazla b\u00fcy\u00fctebiliyordu. Her ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 tek tek takip etmek, b\u00fcy\u00fck projelerde s\u00fcrd\u00fcr\u00fclemez bir \u00e7\u00f6z\u00fcmd\u00fc.<\/p>\n<h2>Kilit Nokta: Prisma'n\u0131n \u00c7al\u0131\u015fma \u015eeklini Anlamak<\/h2>\n<p>Bu kabustan kurtulman\u0131n anahtar\u0131, Prisma'n\u0131n arka planda nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve hangi dosyalar\u0131n ne zaman ve nerede gerekli oldu\u011funu tam olarak anlamaktan ge\u00e7iyordu. Bu bilgi, do\u011fru paketleme stratejisini geli\u015ftirmemde kritik rol oynad\u0131.<\/p>\n<h3><code>prisma generate<\/code> ve <code>node_modules\/@prisma\/client<\/code><\/h3>\n<p><code>prisma generate<\/code> komutu, <code>schema.prisma<\/code> dosyan\u0131z\u0131 kullanarak tip g\u00fcvenli Prisma client'\u0131n\u0131 olu\u015fturur. Bu client, projenizin <code>node_modules\/@prisma\/client<\/code> dizinine yerle\u015fir. Bu dizin sadece JavaScript\/TypeScript dosyalar\u0131n\u0131 de\u011fil, ayn\u0131 zamanda <code>query-engine<\/code> ikili dosyas\u0131n\u0131 ve di\u011fer platforma \u00f6zel varl\u0131klar\u0131 da i\u00e7erir. \u00d6zellikle <code>node_modules\/@prisma\/client\/runtime<\/code> klas\u00f6r\u00fc ve <code>node_modules\/@prisma\/client\/query-engine-*<\/code> gibi dosyalar \u00f6nemlidir.<\/p>\n<h3><code>query-engine<\/code> ve Platform Ba\u011f\u0131ml\u0131l\u0131klar\u0131<\/h3>\n<p>Prisma'n\u0131n kalbinde, veritaban\u0131 sorgular\u0131n\u0131 y\u00fcr\u00fcten <code>query-engine<\/code> bulunur. Bu motor, \u00e7al\u0131\u015ft\u0131\u011f\u0131 ortama g\u00f6re farkl\u0131l\u0131k g\u00f6steren ikili bir dosyad\u0131r. \u00d6rne\u011fin, AWS Lambda'n\u0131n standart \u00e7al\u0131\u015fma zaman\u0131 genellikle <code>linux-x64<\/code> veya <code>linux-arm64<\/code> mimarisine sahiptir. <code>prisma generate<\/code> komutu, varsay\u0131lan olarak projenizin <code>package.json<\/code> dosyas\u0131ndaki <code>prisma.engines<\/code> veya <code>prisma.binaryTargets<\/code> yap\u0131land\u0131rmas\u0131na g\u00f6re uygun motoru indirir. E\u011fer bu yap\u0131land\u0131rma yap\u0131lmazsa, genellikle yerel geli\u015ftirme ortam\u0131n\u0131z\u0131n platformuna uygun olan\u0131 indirir. Bu, Lambda'ya deploy etti\u011finizde motorun bulunamamas\u0131na neden olabilir.<\/p>\n<h3>Dinamik Y\u00fckleme ve Yol Sorunlar\u0131<\/h3>\n<p>Prisma client'\u0131, \u00e7al\u0131\u015fma zaman\u0131nda <code>query-engine<\/code> ikili dosyas\u0131n\u0131 dinamik olarak y\u00fckler. Bunu yaparken, genellikle <code>node_modules\/@prisma\/client<\/code> i\u00e7indeki belirli yollara bakar. Serverless ortam\u0131nda, dosya sistemi yap\u0131s\u0131 ve eri\u015fim yollar\u0131 yerel geli\u015ftirme ortam\u0131n\u0131zdan farkl\u0131 olabilir. esbuild, bu dinamik y\u00fcklemeyi statik bir ba\u011f\u0131ml\u0131l\u0131k olarak g\u00f6rmedi\u011fi i\u00e7in, <code>query-engine<\/code>'i bundle'a dahil etmeyebilir. Sonu\u00e7 olarak, Lambda fonksiyonunuz \u00e7al\u0131\u015f\u0131rken motoru bulamaz ve bir hata f\u0131rlat\u0131r. Bu, genellikle \"Cannot find module '...\/query-engine-...' \" veya \"Error: ENOENT: no such file or directory\" gibi hatalarla kendini g\u00f6sterir.<\/p>\n<h2>Nihai \u00c7\u00f6z\u00fcme Do\u011fru: Ad\u0131m Ad\u0131m Yakla\u015f\u0131m<\/h2>\n<p>T\u00fcm bu denemeler ve Prisma'n\u0131n \u00e7al\u0131\u015fma \u015feklini anlad\u0131ktan sonra, sonunda Serverless + esbuild + Prisma paketleme kabusumu sona erdirecek sa\u011flam bir \u00e7\u00f6z\u00fcm geli\u015ftirdim. Bu \u00e7\u00f6z\u00fcm, <code>serverless-esbuild<\/code> eklentisinin g\u00fc\u00e7l\u00fc \u00f6zelliklerini, Prisma'n\u0131n ihtiya\u00e7lar\u0131n\u0131 ve Lambda'n\u0131n k\u0131s\u0131tlamalar\u0131n\u0131 bir araya getiriyor.<\/p>\n<h3><code>esbuild<\/code> Konfig\u00fcrasyonunu Optimize Etmek<\/h3>\n<p><code>serverless-esbuild<\/code> eklentisi, <code>serverless.yml<\/code> dosyan\u0131zda esbuild yap\u0131land\u0131rmas\u0131n\u0131 y\u00f6netmenizi sa\u011flar. Burada dikkat etmemiz gereken birka\u00e7 \u00f6nemli nokta var:<\/p>\n<p>*   <strong><code>external<\/code> Ba\u011f\u0131ml\u0131l\u0131klar:<\/strong> <code>esbuild<\/code>'in <code>node_modules<\/code> i\u00e7indeki baz\u0131 ba\u011f\u0131ml\u0131l\u0131klar\u0131 bundle'a dahil etmesini istemeyebiliriz, \u00e7\u00fcnk\u00fc bunlar zaten Lambda ortam\u0131nda mevcut olabilir veya manuel olarak dahil edece\u011fimiz ba\u011f\u0131ml\u0131l\u0131klar olabilir. Prisma i\u00e7in bu genellikle ge\u00e7erli de\u011fildir, ancak di\u011fer baz\u0131 yerel ba\u011f\u0131ml\u0131l\u0131klar i\u00e7in kullan\u0131labilir.<br \/>\n*   <strong><code>platform: 'node'<\/code>:<\/strong> Bu ayar, esbuild'e kodun Node.js ortam\u0131nda \u00e7al\u0131\u015faca\u011f\u0131n\u0131 bildirir ve buna g\u00f6re optimizasyonlar yapar.<br \/>\n*   <strong><code>target<\/code>:<\/strong> Lambda'n\u0131n Node.js versiyonuna uygun bir hedef belirlemek \u00f6nemlidir (\u00f6rn. <code>node18<\/code>).<\/p>\n<pre><code class=\"language-yaml\"># serverless.yml i\u00e7inde\ncustom:\n  esbuild:\n    bundle: true\n    minify: true\n    sourcemap: true\n    platform: 'node'\n    target: 'node18' # Lambda \u00e7al\u0131\u015fma zaman\u0131na g\u00f6re ayarlay\u0131n\n    # Di\u011fer esbuild ayarlar\u0131...<\/pre>\n<p><\/code><\/p>\n<h3>Prisma Ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 Do\u011fru Paketlemek<\/h3>\n<p>As\u0131l sihirli k\u0131s\u0131m buras\u0131. <code>serverless-esbuild<\/code> eklentisi, <code>package.patterns<\/code> \u00f6zelli\u011fi sayesinde esbuild'in bundle'lamad\u0131\u011f\u0131 ancak da\u011f\u0131t\u0131m paketine dahil edilmesi gereken dosyalar\u0131 belirtmemize olanak tan\u0131r.<\/p>\n<p>1.  <strong>Prisma Client ve Schema:<\/strong> <code>node_modules\/@prisma\/client<\/code> ve <code>schema.prisma<\/code> dosyalar\u0131 mutlaka dahil edilmeli.<br \/>\n2.  <strong><code>query-engine<\/code>:<\/strong> En kritik par\u00e7a olan <code>query-engine<\/code> ikili dosyas\u0131, do\u011fru platform i\u00e7in se\u00e7ilerek dahil edilmelidir. <code>binaryTargets<\/code> ayar\u0131n\u0131 kullanarak Lambda'n\u0131n mimarisine uygun motoru indirdi\u011finizden emin olun.<\/p>\n<p>\u00d6rnek <code>serverless.yml<\/code> yap\u0131land\u0131rmas\u0131:<\/p>\n<pre><code class=\"language-yaml\"># serverless.yml\nservice: my-prisma-app\n\nplugins:\n  - serverless-esbuild\n\nprovider:\n  name: aws\n  runtime: nodejs18.x\n  region: eu-central-1\n  # ... di\u011fer ayarlar\n\ncustom:\n  esbuild:\n    bundle: true\n    minify: true\n    sourcemap: true\n    platform: 'node'\n    target: 'node18'\n    # Prisma'n\u0131n external ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 belirterek esbuild'in onlar\u0131 bundle'lamas\u0131n\u0131 engelliyoruz\n    # Bu, Prisma'n\u0131n kendi dinamik y\u00fckleme mekanizmas\u0131n\u0131 kullanmas\u0131n\u0131 sa\u011flar\n    external:\n      - '@prisma\/client' # Prisma client'\u0131 kendisi\n      - '@prisma\/engines' # Prisma motorlar\u0131\n    package:\n      patterns:\n        # Prisma client'\u0131n kendisi ve runtime dosyalar\u0131\n        - '!node_modules\/@prisma\/client\/node_modules\/**' # \u0130\u00e7 i\u00e7e ba\u011f\u0131ml\u0131l\u0131klar\u0131 hari\u00e7 tut\n        - 'node_modules\/@prisma\/client\/**'\n        # .prisma klas\u00f6r\u00fcn\u00fc dahil et (query-engine burada olabilir)\n        - 'node_modules\/.prisma\/**'\n        # schema.prisma dosyas\u0131n\u0131 dahil et\n        - 'schema.prisma'\n        # E\u011fer \u00f6zel bir engines klas\u00f6r\u00fc kullan\u0131yorsan\u0131z\n        - 'node_modules\/@prisma\/engines\/**'\n        # Sadece gerekli query-engine'i dahil etmek i\u00e7in daha spesifik bir yakla\u015f\u0131m:\n        # 'node_modules\/.prisma\/client\/query-engine-linux-arm64-openssl-3.0.x'\n        # 'node_modules\/.prisma\/client\/libquery_engine-linux-arm64-openssl-3.0.x.so.node'\n        # veya e\u011fer linux-x64 kullan\u0131yorsan\u0131z:\n        # 'node_modules\/.prisma\/client\/query-engine-linux-x64-openssl-3.0.x'\n        # 'node_modules\/.prisma\/client\/libquery_engine-linux-x64-openssl-3.0.x.so.node'\n        # Not: Yukar\u0131daki pattern'ler, node_modules\/.prisma\/** ile zaten kapsanm\u0131\u015f olabilir.\n        # \u00d6nemli olan, do\u011fru platforma ait motorun dahil edildi\u011finden emin olmakt\u0131r.\n        # E\u011fer sadece tek bir motor kullan\u0131yorsan\u0131z, package.json'daki binaryTargets ayar\u0131n\u0131 kontrol edin.<\/pre>\n<p><\/code><\/p>\n<p><code>package.json<\/code> dosyan\u0131zda <code>prisma.binaryTargets<\/code>'\u0131 Lambda'n\u0131z\u0131n \u00e7al\u0131\u015faca\u011f\u0131 ortama g\u00f6re ayarlad\u0131\u011f\u0131n\u0131zdan emin olun:<\/p>\n<pre><code class=\"language-json\">\/\/ package.json\n{\n  \"name\": \"my-serverless-app\",\n  \"version\": \"1.0.0\",\n  \"prisma\": {\n    \"seed\": \"ts-node prisma\/seed.ts\",\n    \"binaryTargets\": [\"linux-arm64-openssl-3.0.x\"] \/\/ Veya \"linux-x64-openssl-3.0.x\"\n  },\n  \"scripts\": {\n    \"prisma:generate\": \"prisma generate\",\n    \"deploy\": \"npm run prisma:generate && sls deploy\"\n  },\n  \"dependencies\": {\n    \"@prisma\/client\": \"^5.x.x\",\n    \"prisma\": \"^5.x.x\"\n  }\n}<\/pre>\n<p><\/code><br \/>\n<strong>\u00d6nemli Not:<\/strong> <code>prisma.binaryTargets<\/code> i\u00e7indeki <code>openssl<\/code> versiyonu, kulland\u0131\u011f\u0131n\u0131z Node.js runtime'\u0131na ve AWS Lambda ortam\u0131na g\u00f6re de\u011fi\u015febilir. \u00d6rne\u011fin, Node.js 18 i\u00e7in genellikle <code>openssl-3.0.x<\/code> kullan\u0131l\u0131rken, daha eski versiyonlar i\u00e7in <code>openssl-1.1.x<\/code> gerekebilir. Do\u011fru versiyonu kulland\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<h3>Lambda Katmanlar\u0131 (Layers) ile Daha Temiz Bir Yap\u0131<\/h3>\n<p>Paket boyutunu daha da optimize etmek ve da\u011f\u0131t\u0131m s\u00fcresini k\u0131saltmak i\u00e7in Prisma motorunu ve hatta t\u00fcm <code>@prisma\/client<\/code> ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n\u0131 bir Lambda Katman\u0131na ta\u015f\u0131yabilirsiniz. Bu, fonksiyon kodunuzu motor ba\u011f\u0131ml\u0131l\u0131\u011f\u0131ndan ay\u0131r\u0131r ve motorun her fonksiyon da\u011f\u0131t\u0131m\u0131nda yeniden y\u00fcklenmesini engeller.<\/p>\n<p><strong>Avantajlar\u0131:<\/strong><br \/>\n*   Fonksiyon paket boyutu k\u00fc\u00e7\u00fcl\u00fcr.<br \/>\n*   Da\u011f\u0131t\u0131m s\u00fcresi k\u0131sal\u0131r.<br \/>\n*   Birden fazla fonksiyon ayn\u0131 Prisma motorunu kullanabilir.<\/p>\n<p><strong>Dezavantajlar\u0131:<\/strong><br \/>\n*   Katman y\u00f6netimi ek karma\u015f\u0131kl\u0131k getirir.<br \/>\n*   Prisma s\u00fcr\u00fcm g\u00fcncellemelerinde katman\u0131n da g\u00fcncellenmesi gerekir.<\/p>\n<p><strong>Uygulama:<\/strong><br \/>\n1.  Prisma motorunu ve <code>node_modules\/@prisma\/client<\/code> klas\u00f6r\u00fcn\u00fc i\u00e7eren ayr\u0131 bir zip dosyas\u0131 olu\u015fturun.<br \/>\n2.  Bu zip dosyas\u0131n\u0131 bir Lambda katman\u0131 olarak AWS'ye y\u00fckleyin.<br \/>\n3.  <code>serverless.yml<\/code> dosyan\u0131zda fonksiyonlar\u0131n\u0131za bu katman\u0131 ekleyin ve <code>package.patterns<\/code> i\u00e7inden Prisma ile ilgili t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 \u00e7\u0131kar\u0131n.<\/p>\n<pre><code class=\"language-yaml\"># serverless.yml (Lambda Katman\u0131 ile)\nservice: my-prisma-app-with-layer\n\nplugins:\n  - serverless-esbuild\n  - serverless-layers # E\u011fer katman\u0131 Serverless ile y\u00f6netiyorsan\u0131z\n\nprovider:\n  name: aws\n  runtime: nodejs18.x\n  region: eu-central-1\n  layers:\n    - arn:aws:lambda:eu-central-1:123456789012:layer:PrismaLayer:1 # Kendi katman ARN'nizi buraya yaz\u0131n\n\ncustom:\n  esbuild:\n    bundle: true\n    minify: true\n    sourcemap: true\n    platform: 'node'\n    target: 'node18'\n    # Prisma'y\u0131 art\u0131k katmanda oldu\u011fu i\u00e7in external olarak i\u015faretleyebiliriz\n    external:\n      - '@prisma\/client'\n      - '@prisma\/engines'\n    package:\n      patterns:\n        # Prisma ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 art\u0131k dahil etmiyoruz\n        - 'schema.prisma' # Schema dosyas\u0131 hala gerekli olabilir<\/pre>\n<p><\/code><br \/>\nBu yakla\u015f\u0131m, \u00f6zellikle b\u00fcy\u00fck projelerde veya birden fazla Lambda fonksiyonunun ayn\u0131 Prisma ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n\u0131 kulland\u0131\u011f\u0131 durumlarda \u00e7ok daha temiz ve verimli bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<h2>\u00d6rnek Bir <code>serverless.yml<\/code> ve <code>esbuild<\/code> Yap\u0131land\u0131rmas\u0131<\/h2>\n<p>\u0130\u015fte t\u00fcm bu \u00e7\u00f6z\u00fcmleri bir araya getiren \u00f6rnek bir <code>serverless.yml<\/code> ve ilgili <code>package.json<\/code> scriptleri:<\/p>\n<h3><code>serverless.yml<\/code> Yap\u0131land\u0131rmas\u0131<\/h3>\n<pre><code class=\"language-yaml\">service: my-serverless-prisma-app\n\nframeworkVersion: '3'\n\nplugins:\n  - serverless-esbuild\n\nprovider:\n  name: aws\n  runtime: nodejs18.x\n  region: eu-central-1\n  memorySize: 256 # Minimum Prisma i\u00e7in 256MB \u00f6nerilir\n  timeout: 30 # Gerekirse art\u0131r\u0131labilir\n  environment:\n    DATABASE_URL: ${env:DATABASE_URL} # Ortam de\u011fi\u015fkeni olarak veritaban\u0131 URL'si\n\nfunctions:\n  hello:\n    handler: src\/functions\/hello.handler\n    events:\n      - httpApi:\n          path: \/hello\n          method: get\n  users:\n    handler: src\/functions\/users.handler\n    events:\n      - httpApi:\n          path: \/users\n          method: get\n\ncustom:\n  esbuild:\n    bundle: true\n    minify: true\n    sourcemap: true\n    platform: 'node'\n    target: 'node18'\n    # Prisma'y\u0131 external olarak i\u015faretlemek, esbuild'in onu bundle'lamas\u0131n\u0131 engeller.\n    # Bu sayede Prisma'n\u0131n kendi dinamik y\u00fckleme mekanizmas\u0131 devreye girer.\n    external:\n      - '@prisma\/client'\n      - '@prisma\/engines' # E\u011fer engines klas\u00f6r\u00fc ayr\u0131 bir ba\u011f\u0131ml\u0131l\u0131k olarak y\u00f6netiliyorsa\n    package:\n      # esbuild'in bundle'lamad\u0131\u011f\u0131 ancak da\u011f\u0131t\u0131m paketine dahil edilmesi gereken dosyalar\n      patterns:\n        # Prisma client'\u0131n kendisi ve runtime dosyalar\u0131\n        - 'node_modules\/@prisma\/client\/**'\n        # .prisma klas\u00f6r\u00fcn\u00fc dahil et (query-engine ve di\u011fer platforma \u00f6zel dosyalar burada bulunur)\n        - 'node_modules\/.prisma\/**'\n        # schema.prisma dosyas\u0131n\u0131 dahil et, \u00e7\u00fcnk\u00fc Prisma \u00e7al\u0131\u015fma zaman\u0131nda buna ihtiya\u00e7 duyabilir\n        - 'schema.prisma'\n        # node_modules i\u00e7indeki baz\u0131 gereksiz dosyalar\u0131 hari\u00e7 tutarak paket boyutunu optimize et\n        - '!node_modules\/**\/README.md'\n        - '!node_modules\/**\/*.map'\n        - '!node_modules\/**\/*.txt'\n        - '!node_modules\/**\/*.yml'\n        - '!node_modules\/**\/*.d.ts'\n        - '!node_modules\/**\/package.json' # package.json'lar\u0131 hari\u00e7 tutmak bazen sorun yaratabilir, dikkatli olun\n        - '!node_modules\/@types\/**'\n        - '!node_modules\/aws-sdk\/**' # E\u011fer Lambda ortam\u0131nda zaten mevcutsa<\/pre>\n<p><\/code><\/p>\n<h3><code>package.json<\/code> Scriptleri<\/h3>\n<pre><code class=\"language-json\">{\n  \"name\": \"my-serverless-prisma-app\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Serverless application with esbuild and Prisma\",\n  \"main\": \"handler.js\",\n  \"scripts\": {\n    \"prisma:generate\": \"prisma generate\",\n    \"deploy\": \"npm run prisma:generate && sls deploy\",\n    \"dev\": \"sls offline start\",\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"@prisma\/client\": \"^5.x.x\"\n  },\n  \"devDependencies\": {\n    \"@types\/aws-lambda\": \"^8.10.134\",\n    \"@types\/node\": \"^20.11.24\",\n    \"esbuild\": \"^0.20.1\",\n    \"prisma\": \"^5.x.x\",\n    \"serverless\": \"^3.38.0\",\n    \"serverless-esbuild\": \"^1.50.0\",\n    \"serverless-offline\": \"^13.3.3\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^5.3.3\"\n  },\n  \"prisma\": {\n    \"seed\": \"ts-node prisma\/seed.ts\",\n    \"binaryTargets\": [\"linux-arm64-openssl-3.0.x\"] # Veya \"linux-x64-openssl-3.0.x\"\n  }\n}<\/pre>\n<p><\/code><\/p>\n<p>Bu yap\u0131land\u0131rma ile, <code>npm run deploy<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda:<br \/>\n1.  <code>prisma generate<\/code> \u00e7al\u0131\u015f\u0131r ve <code>@prisma\/client<\/code> ile <code>query-engine<\/code>'i (belirtilen <code>binaryTargets<\/code>'a g\u00f6re) olu\u015fturur.<br \/>\n2.  <code>serverless-esbuild<\/code> devreye girer, fonksiyon kodunuzu esbuild ile bundle'lar.<br \/>\n3.  <code>package.patterns<\/code> sayesinde, esbuild'in bundle'lamad\u0131\u011f\u0131 ancak Serverless'\u0131n da\u011f\u0131t\u0131m paketine dahil etmesi gereken Prisma ile ilgili t\u00fcm dosyalar (client, motor, schema) do\u011fru yerlerine kopyalan\u0131r.<\/p>\n<p>Bu sayede, Lambda fonksiyonunuz Prisma'y\u0131 sorunsuz bir \u015fekilde bulup kullanabilir.<\/p>\n<h2>Sonu\u00e7: Uzun Soluklu Bir M\u00fccadelenin Sonu<\/h2>\n<p>Serverless, esbuild ve Prisma'y\u0131 bir araya getirme yolculu\u011fu, beklentimin \u00e7ok \u00f6tesinde bir paketleme kabusuna d\u00f6n\u00fc\u015fm\u00fc\u015ft\u00fc. Saatler s\u00fcren denemeler, onlarca hata mesaj\u0131 ve derinlemesine ara\u015ft\u0131rma sonucunda, bu \u00fc\u00e7 teknolojinin inceliklerini anlamak ve do\u011fru yap\u0131land\u0131rmay\u0131 bulmak m\u00fcmk\u00fcn oldu. Kilit nokta, esbuild'in \"ne yapt\u0131\u011f\u0131n\u0131\" ve Prisma'n\u0131n \"neye ihtiya\u00e7 duydu\u011funu\" tam olarak kavramak ve <code>serverless-esbuild<\/code> eklentisinin <code>package.patterns<\/code> g\u00fcc\u00fcn\u00fc do\u011fru kullanmakt\u0131.<\/p>\n<p>Art\u0131k projelerimi bu g\u00fc\u00e7l\u00fc kombinasyonla g\u00f6n\u00fcl rahatl\u0131\u011f\u0131yla geli\u015ftirip da\u011f\u0131tabiliyorum. Umar\u0131m bu detayl\u0131 rehber, sizin de benzer sorunlarla bo\u011fu\u015furken zaman ve sinir kayb\u0131 ya\u015faman\u0131z\u0131 engeller. Unutmay\u0131n, her teknoloji y\u0131\u011f\u0131n\u0131 kendi \u00f6zel zorluklar\u0131n\u0131 beraberinde getirir, ancak do\u011fru bilgi ve yakla\u015f\u0131mla her sorunun bir \u00e7\u00f6z\u00fcm\u00fc vard\u0131r.<\/p>\n<h2>SSS (S\u0131k\u00e7a Sorulan Sorular)<\/h2>\n<h3>Neden sadece <code>serverless-plugin-include-dependencies<\/code> kullanmad\u0131k?<\/h3>\n<p><code>serverless-plugin-include-dependencies<\/code> genellikle t\u00fcm <code>node_modules<\/code> klas\u00f6r\u00fcn\u00fc dahil etmeye \u00e7al\u0131\u015f\u0131r. esbuild ile birlikte kullan\u0131ld\u0131\u011f\u0131nda, esbuild zaten \u00e7o\u011fu ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 bundle'lad\u0131\u011f\u0131 i\u00e7in bu gereksiz olur ve paket boyutunu \u015fi\u015firir. Ayr\u0131ca, Prisma'n\u0131n dinamik olarak y\u00fckledi\u011fi <code>query-engine<\/code> gibi \u00f6zel ikili dosyalar\u0131 her zaman do\u011fru \u015fekilde ele almayabilir. <code>serverless-esbuild<\/code>'in <code>package.patterns<\/code> \u00f6zelli\u011fi, esbuild'in \u00e7\u0131kt\u0131s\u0131na eklenmesi gereken spesifik dosyalar\u0131 daha hassas bir \u015fekilde kontrol etmemizi sa\u011flar.<\/p>\n<h3>Lambda katmanlar\u0131 her zaman gerekli mi?<\/h3>\n<p>Hay\u0131r, her zaman gerekli de\u011fildir. E\u011fer fonksiyonunuzun paket boyutu AWS Lambda'n\u0131n s\u0131k\u0131\u015ft\u0131r\u0131lmam\u0131\u015f 250MB (veya s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f 50MB) limitini a\u015fm\u0131yorsa ve da\u011f\u0131t\u0131m s\u00fcresi sizin i\u00e7in kabul edilebilir seviyelerdeyse, katman kullanmak zorunda de\u011filsiniz. Ancak, \u00f6zellikle birden fazla fonksiyonunuz varsa ve hepsi ayn\u0131 Prisma motorunu kullan\u0131yorsa, katmanlar paket boyutunu k\u00fc\u00e7\u00fcltmek ve da\u011f\u0131t\u0131m h\u0131z\u0131n\u0131 art\u0131rmak i\u00e7in harika bir yoldur.<\/p>\n<h3>Bu \u00e7\u00f6z\u00fcm di\u011fer ORM'ler i\u00e7in de ge\u00e7erli mi?<\/h3>\n<p>Temel paketleme prensipleri (esbuild'in ba\u011f\u0131ml\u0131l\u0131klar\u0131 nas\u0131l ele ald\u0131\u011f\u0131, Serverless'\u0131n dosya sistemi k\u0131s\u0131tlamalar\u0131) di\u011fer ORM'ler i\u00e7in de ge\u00e7erli olabilir. Ancak, her ORM'in kendine \u00f6zg\u00fc ba\u011f\u0131ml\u0131l\u0131k yap\u0131s\u0131 ve \u00e7al\u0131\u015fma zaman\u0131 gereksinimleri vard\u0131r. \u00d6rne\u011fin, TypeORM veya Sequelize gibi ORM'ler genellikle Prisma gibi ayr\u0131 bir ikili motor kullanmazlar. Bu nedenle, onlar\u0131n paketleme s\u00fcre\u00e7leri genellikle daha basittir ve sadece <code>node_modules<\/code> i\u00e7indeki JavaScript dosyalar\u0131n\u0131n do\u011fru \u015fekilde bundle'lanmas\u0131n\u0131 veya dahil edilmesini gerektirir. Bu makaledeki \u00e7\u00f6z\u00fcmler Prisma'ya \u00f6zeldir, ancak genel yakla\u015f\u0131m (esbuild'in <code>external<\/code> ve <code>serverless-esbuild<\/code>'in <code>package.patterns<\/code> kullan\u0131m\u0131) di\u011fer karma\u015f\u0131k ba\u011f\u0131ml\u0131l\u0131klar i\u00e7in bir ba\u015flang\u0131\u00e7 noktas\u0131 olabilir.<\/p>\n<h3><code>yarn<\/code> yerine <code>npm<\/code> kullan\u0131rsam ne de\u011fi\u015fir?<\/h3>\n<p><code>yarn<\/code> veya <code>npm<\/code> kullanman\u0131z, <code>package.json<\/code> i\u00e7indeki ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00f6netme \u015feklinizi de\u011fi\u015ftirir, ancak Prisma'n\u0131n kendisinin veya esbuild'in \u00e7al\u0131\u015fma \u015feklini do\u011frudan etkilemez. <code>prisma generate<\/code> komutu ve Serverless da\u011f\u0131t\u0131m s\u00fcreci her iki paket y\u00f6neticisiyle de sorunsuz \u00e7al\u0131\u015f\u0131r. \u00d6nemli olan, <code>prisma generate<\/code> komutunun <code>sls deploy<\/code> \u00f6ncesinde \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131ndan ve <code>package.json<\/code>'daki <code>binaryTargets<\/code> ayar\u0131n\u0131n do\u011fru oldu\u011fundan emin olmakt\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm\nServerless mimariler, geli\u015ftiricilere h\u0131z, \u00f6l\u00e7eklenebilirlik ve maliyet etkinl&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[874],"tags":[],"class_list":{"0":"post-37786","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-server","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm\" \/>\n<meta property=\"og:description\" content=\"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm Serverless mimariler, geli\u015ftiricilere h\u0131z, \u00f6l\u00e7eklenebilirlik ve maliyet etkinl...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-15T10:30:48+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm\",\"datePublished\":\"2026-01-15T10:30:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/\"},\"wordCount\":2224,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Server\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/\",\"name\":\"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-15T10:30:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/","og_locale":"tr_TR","og_type":"article","og_title":"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm","og_description":"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm Serverless mimariler, geli\u015ftiricilere h\u0131z, \u00f6l\u00e7eklenebilirlik ve maliyet etkinl...","og_url":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-15T10:30:48+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm","datePublished":"2026-01-15T10:30:48+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/"},"wordCount":2224,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Server"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/","url":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/","name":"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-15T10:30:48+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/serverless-esbuild-prisma-paketleme-kabusumu-sonunda-nasil-cozdum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Serverless + esbuild + Prisma Paketleme Kabusumu Sonunda Nas\u0131l \u00c7\u00f6zd\u00fcm"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37786","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37786"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37786\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37786"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}