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
Ich glaube, man konnte
jsrauch über npm herunterladen,, lolPHP soll untergehen.
Warum in einem JS-Artikel ausgerechnet PHP?? Aus der Perspektive von jemandem, der an einem PHP-Projekt arbeitet, tut mir das im Herzen weh.