Installer dosya adı üç yerde tekrar yazılıyor, versiyon hiçbir yerde okunmuyor
Notifio Windows için bir NSIS kurulumu, Mac için iki DMG dosyası gönderiliyor, universal build yapılmamış çünkü Chromium'un iki kopyasını paketlemek gerekir. Dosyalar yerel olarak derleniyor, Cloudflare R2'ye sabit object key'ler altında yükleniyor, sonra bir API route aracılığıyla presigned URL oluşturup yönlendiriliyor.
Sorun basit ama sinir bozucu: notifio-arm64.dmg gibi tek bir dosya adı üç ayrı dosyada eşleştirilmek zorunda. Birinci yer, electron-builder'ın disk üzerindeki dosyayı nasıl adlandıracağını belirleyen konfigürasyon:
1"mac": {2"target": [{ "target": "dmg", "arch": ["arm64", "x64"] }],3"artifactName": "notifio-${arch}.dmg"4},5"win": {6"target": ["nsis"],7"artifactName": "notifio-setup.exe"8}İkinci yer, release script'i. Ne yükleyeceğini ve hangi key altında yükleyeceğini belirler. Yorum satırı type tanımlaması gibi çalışıyor:
1// Artifact name -> content type.2// Names must match package.json build.artifactName3// and the FILES map in server/src/app/api/download/[platform]/route.ts.4const ARTIFACTS = {5win: [{ fi...Üçüncü yer, sunucu tarafındaki download API'si. FILES haritası dosya adlarını bilmek zorunda.
Sorun, bu üç noktanın birbirleriyle hiçbir iletişimi olmadığı. Dosya adı değişirse, hepsi ayrı ayrı güncellenmeliyor. Yorum satırları çalışan tek belgeleme. Tip sistemi yardım etmiyor çünkü string'ler string'dir.
Bu durum, derleme otomasyonunda yaygın bir sorundur: yapılandırma dosyaları, build script'leri ve runtime kod birbirinden bağımsız yaşıyor. Çözüm genelde merkezi bir kaynak oluşturmak, mesela tüm dosya adlarını bir JSON'dan okuyan bir utility fonksiyonu, ya da build aşamasında bu bilgiyi dinamik olarak enjekte etmek. Şimdilik, yorum satırları güvensiz bir anlaşma gibi çalışıyor.
Yazının tamamını Daniel Pertu'nun dev.to yazısında okuyabilirsin.
0 yorum