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
Sanırım
jsrnpm'den indirilebiliyordu,, hahaKahrolsun php
JavaScript yazısında neden PHP var ki?? PHP projesi üzerinde çalışan biri olarak içim burkuluyor.