7 puan yazan xguru 2024-04-26 | 3 yorum | WhatsApp'ta paylaş

JSR - JavaScript paketlerini paylaşmak için yeni bir kayıt sistemi

  • Son birkaç yılda yarn ve pnpm gibi yeni paket yöneticileri ortaya çıkarak paket indirme yöntemlerini geliştirdi
  • Ancak JavaScript ekosisteminin çekirdeği olan npm paket kayıt sistemi neredeyse hiç evrim geçirmedi
    • Dikkat çeken son güncelleme, yıllar önce eklenen files sekmesiydi
  • Aktif biçimde evrildiği bilinen JavaScript dilinin, paradoksal şekilde modası geçmiş bir dağıtım modeli tarafından köstekleniyor gibi görünmesi dikkat çekici

JavaScript modül sisteminin sorunları

  • Node oluşturulduğu sırada JavaScript için standart bir modül sistemi yoktu; bu yüzden npm kayıt sistemi ve Node, temelde kusurlu olan CommonJS(require) sistemini varsayılan olarak benimsedi
    • Bu, tarayıcıda çalışmayan bir sistemdi
  • Neredeyse 10 yıl önce, 2015'te dilin kendisi ES modül(import) sözdizimini benimsedi
  • Günümüzde JavaScript'in büyük bölümü ES modülleriyle yazılıyor, ancak bu modülleri dağıtma yolu hâlâ karmaşık
    • Özellikle işin içinde TypeScript varsa bu daha da belirginleşiyor
  • Ekosistemdeki bu açık boşluk, JSR'nin ortaya çıkmasına neden oldu
    • JSR başka bir paket yöneticisi değil; sunucu tarafı çalışma ortamları, tarayıcılar ve çeşitli araçlar arasında JavaScript ve TypeScript paylaşım biçimini dönüştürmek için tasarlanmış yenilikçi bir kayıt sistemi

JSR'nin özellikleri ve avantajları

  • JSR, uzun süredir geliştiricileri zorlayan karmaşıklıkları sadeleştirerek kod dağıtım sürecini temelden iyileştiriyor
  • Yalnızca ESM destekleyen ve TypeScript öncelikli olan JSR, package.json yapılandırmasıyla tsconfig derleyici seçeneklerinden oluşan labirentin zahmetli ayarlarını ortadan kaldırıyor
  • Paket puanlama sistemi sayesinde JSR, kod dağıtımında en iyi uygulamaları teşvik ediyor
    • Dart topluluğundaki pub.dev'e benzer şekilde, dışa aktarılan her sembol için kapsamlı JSDoc belgeleri içeren paketlere daha yüksek puan veriyor
  • Go ve Rust gibi diğer modern programlama ekosistemlerinde görüldüğü gibi, JSR varsayılan olarak otomatik belge oluşturma özelliği sunuyor

npm ile ilişkisi

  • JSR bir kayıt sistemidir; npm kayıt sistemi için başka bir istemci değildir
    • Ancak bu, npm'deki her şeyden vazgeçmeniz ya da ayrışmış bir JavaScript modül ekosistemine geçmeniz gerektiği anlamına gelmez
  • JSR, npm'in yerini almak için değil, npm kayıt sistemini tamamlamak için tasarlandı
    • JSR paketleri npm paketlerine bağımlı olabilir (ör. bu paket referansı)
  • Ayrıca JSR paketleri, mevcut npm merkezli yazılımlarda da kullanılabilir
    • Çünkü JSR'nin kendisi, npm uyumlu tarball'lar dağıtan bir npm kayıt sistemi olarak çalışır (npm.jsr.io üzerinden erişilebilir)
    • Bu sayede JSR paketleri, npm, yarn veya pnpm kullanan her türlü yazılıma eklenebilir ve özel kayıt sistemleriyle entegre edilebilir
  • JSR'nin dağıttığı npm tarball'ları optimize edilmiştir

Güvenlik önceliği

  • Deno'da, JavaScript geliştirmede güvenlik en yüksek öncelik olarak görülür
  • Hiçbir kayıt sistemi yayımlanan tüm kodu kapsamlı biçimde denetleyemez, ancak JSR yayımlayıcı konusunda şeffaflık sağlar ve yayımlama sürecini korur
  • GitHub Actions ve OIDC token'larını entegre ederek JSR, yazılım artefaktları için tedarik zinciri seviyelerini kullanıp gelişmiş, doğrulanabilir kaynak kanıtları üretir ve bunları Sigstore'da saklar
    • Bu, yalnızca kodun özgünlüğünü garanti etmekle kalmaz; geliştiricilerin hayata geçirdiği şeyler konusunda güven ve sorumluluk da oluşturur

JavaScript geliştirmesinin merkezi

  • JavaScript, birçok programcı için ortak dil olarak evrensel ve son derece erişilebilirdir
  • Bu dilin, geliştiricilerin gereksiz karmaşıklık olmadan ürettiklerini paylaşabileceği merkezi bir merkeze, yani bir kent meydanına ihtiyacı var
  • Biz, JavaScript'in önümüzdeki uzun yıllar boyunca yazılım geliştirmenin merkezinde kalacağına inanıyoruz ve JSR bu kalıcı önemini desteklemeyi amaçlıyor
  • JSR, ekosistemdeki bir başka araç olmanın ötesinde, JavaScript ve TypeScript dağıtımı hakkında düşünme biçimimizde köklü bir değişimi temsil ediyor

3 yorum

 
yangeok 2024-04-30

Sanırım jsr npm'den indirilebiliyordu,, haha

 
zzzz2222 2024-04-26

Kahrolsun php

 
semjei 2024-04-29

JavaScript yazısında neden PHP var ki?? PHP projesi üzerinde çalışan biri olarak içim burkuluyor.