7 Punkte von xguru 2024-04-26 | 3 Kommentare | Auf WhatsApp teilen

JSR - Ein neues Registry zum Teilen von JavaScript-Paketen

  • In den vergangenen Jahren sind neue Paketmanager wie yarn oder pnpm erschienen und haben verbessert, wie Pakete heruntergeladen werden
  • Das npm-Paket-Registry, ein Kernbestandteil des JavaScript-Ökosystems, hat sich jedoch kaum weiterentwickelt
    • Das letzte bemerkenswerte Update war der vor Jahren hinzugefügte Tab files
  • Paradoxerweise scheint die für ihre schnelle Weiterentwicklung bekannte JavaScript-Sprache von einem veralteten Distributionsmodell ausgebremst zu werden

Probleme des JavaScript-Modulsystems

  • Als Node entwickelt wurde, gab es kein standardisiertes Modulsystem für JavaScript, daher übernahmen das npm-Registry und Node standardmäßig das grundlegend fehlerhafte CommonJS-System (require)
    • Dieses System funktionierte im Browser nicht
  • Vor fast 10 Jahren, im Jahr 2015, übernahm die Sprache selbst die Syntax für ES-Module (import)
  • Heute wird der Großteil von JavaScript mit ES-Modulen geschrieben, aber der Weg, solche Module zu verteilen, ist weiterhin komplex
    • Besonders dann, wenn TypeScript beteiligt ist
  • Aus dieser offensichtlichen Lücke im Ökosystem entstand JSR
    • JSR ist kein weiterer Paketmanager, sondern ein grundlegendes Registry, das dafür entwickelt wurde, die Art und Weise zu verändern, wie JavaScript und TypeScript zwischen Server-seitigen Runtimes, Browsern und verschiedenen Tools geteilt werden

Funktionen und Vorteile von JSR

  • JSR verbessert den Prozess der Code-Verteilung grundlegend, indem es Komplexität vereinfacht, die Entwickler seit Langem belastet
  • Als ESM-only- und TypeScript-first-Registry beseitigt JSR die umständliche Abstimmung von package.json-Konfigurationen und labyrinthartigen tsconfig-Compileroptionen
  • Mit einem Paket-Bewertungssystem fördert JSR Best Practices bei der Code-Verteilung
    • Ähnlich wie pub.dev in der Dart-Community vergibt es höhere Bewertungen an Pakete, die umfassende JSDoc-Dokumentation für jedes exportierte Symbol enthalten
  • Wie in anderen modernen Programmierökosystemen wie Go oder Rust bietet JSR standardmäßig automatische Dokumentationsgenerierung

Beziehung zu npm

  • JSR ist ein Registry und kein weiterer Client für das npm-Registry
    • Das bedeutet jedoch nicht, dass man alles rund um npm aufgeben oder in ein isoliertes JavaScript-Modul-Ökosystem wechseln muss
  • JSR wurde als Ergänzung zum npm-Registry konzipiert, nicht als Ersatz für npm
    • JSR-Pakete können von npm-Paketen abhängen (z. B. siehe diese Paket-Referenz)
  • Außerdem können JSR-Pakete in bestehender, auf npm ausgerichteter Software verwendet werden
    • Denn JSR selbst fungiert als npm-Registry, das npm-kompatible Tarballs ausliefert, erreichbar unter npm.jsr.io
    • Dadurch lassen sich JSR-Pakete in jede Software einbinden, die npm, yarn oder pnpm verwendet, und auch mit privaten Registries integrieren
  • Die von JSR ausgelieferten npm-Tarballs sind optimiert

Sicherheit im Fokus

  • Bei Deno hat Sicherheit in der JavaScript-Entwicklung höchste Priorität
  • Kein Registry kann den gesamten veröffentlichten Code vollständig überwachen, aber JSR bietet Transparenz über Publisher und schützt den Veröffentlichungsprozess
  • Durch die Integration von GitHub Actions und OIDC-Tokens erzeugt JSR fortgeschrittene, überprüfbare Herkunftsnachweise mithilfe von Supply-chain Levels for Software Artifacts und speichert sie in Sigstore
    • Das stellt nicht nur die Authentizität des Codes sicher, sondern schafft auch Vertrauen und Verantwortung dafür, was Entwickler implementieren

Ein zentraler Ort für JavaScript-Entwicklung

  • JavaScript ist als gemeinsame Sprache vieler Programmierer universell und leicht zugänglich
  • Diese Sprache braucht einen zentralen Hub, einen Town Square, in dem Entwickler ihre Arbeit ohne unnötige Komplexität teilen können
  • Wir glauben, dass JavaScript noch viele Jahre im Zentrum der Softwareentwicklung stehen wird, und JSR soll diese anhaltende Relevanz unterstützen
  • JSR ist nicht einfach nur ein weiteres Werkzeug im Ökosystem, sondern steht für einen grundlegenden Wandel in der Art, wie wir über die Verteilung von JavaScript und TypeScript denken

3 Kommentare

 
yangeok 2024-04-30

Ich glaube, man konnte jsr auch über npm herunterladen,, lol

 
zzzz2222 2024-04-26

PHP soll untergehen.

 
semjei 2024-04-29

Warum in einem JS-Artikel ausgerechnet PHP?? Aus der Perspektive von jemandem, der an einem PHP-Projekt arbeitet, tut mir das im Herzen weh.