JSR - un nouveau registre pour le partage de paquets JavaScript
- Ces dernières années, de nouveaux gestionnaires de paquets comme yarn ou pnpm sont apparus et ont amélioré la manière de télécharger les paquets
- Mais le registre de paquets npm, au cœur de l’écosystème JavaScript, n’a presque pas évolué
- La dernière mise à jour notable était l’ajout de l’onglet "files" il y a plusieurs années
- Il est paradoxal que le langage JavaScript, connu pour évoluer rapidement, semble freiné par un modèle de distribution dépassé
Les problèmes du système de modules JavaScript
- Au moment de la création de Node, il n’existait pas de système de modules standard pour JavaScript ; le registre npm et Node ont donc adopté par défaut le système CommonJS(
require), fondamentalement défectueux
- C’était un système qui ne fonctionnait pas dans le navigateur
- Il y a presque 10 ans, en 2015, le langage a adopté en natif la syntaxe des modules ES (
import)
- Aujourd’hui, la plupart du JavaScript est écrit avec des modules ES, mais la voie pour distribuer ces modules reste complexe
- C’est encore plus vrai lorsque TypeScript entre en jeu
- C’est ce manque évident dans l’écosystème qui a donné naissance à JSR
- JSR n’est pas un autre gestionnaire de paquets, mais un registre transformateur conçu pour réinventer la façon de partager JavaScript et TypeScript entre runtimes côté serveur, navigateurs et divers outils
Caractéristiques et avantages de JSR
- JSR améliore en profondeur le processus de distribution du code en simplifiant des complexités qui ont longtemps tourmenté les développeurs
- Exclusivement ESM et pensé d’abord pour TypeScript, JSR élimine les ajustements fastidieux de configuration
package.json et le dédale des options de compilation tsconfig
- Grâce à un système de notation des paquets, JSR encourage les bonnes pratiques de distribution du code
- À l’image de pub.dev dans la communauté Dart, il attribue de meilleurs scores aux paquets qui incluent une documentation JSDoc complète pour chaque symbole exporté
- Comme on le voit dans d’autres écosystèmes modernes tels que Go ou Rust, JSR fournit nativement une génération automatique de documentation
Relation avec npm
- JSR est un registre, pas un autre client pour le registre npm
- Cela ne signifie toutefois pas qu’il faut abandonner tout ce qui existe dans npm ni basculer vers un écosystème de modules JavaScript séparé
- JSR a été conçu pour compléter le registre npm, non pour le remplacer
- Les paquets JSR peuvent dépendre de paquets npm (par exemple, voir la référence de ce paquet)
- Les paquets JSR peuvent aussi être utilisés dans les logiciels existants centrés sur npm
- Car JSR fonctionne lui-même comme un registre npm distribuant des tarballs compatibles npm (accessibles sur npm.jsr.io)
- Cela permet d’inclure des paquets JSR dans n’importe quel logiciel utilisant npm, yarn ou pnpm, et de les intégrer à des registres privés
- Les tarballs npm distribués par JSR sont optimisés
La sécurité comme priorité
- Chez Deno, la sécurité est une priorité absolue dans le développement JavaScript
- Aucun registre ne peut surveiller de manière exhaustive tout le code publié, mais JSR apporte de la transparence sur les éditeurs et sécurise le processus de publication
- En intégrant GitHub Actions et les jetons OIDC, JSR génère des attestations d’origine avancées et vérifiables pour les artefacts logiciels à l’aide de Supply-chain Levels, puis les stocke dans Sigstore
- Cela garantit non seulement l’authenticité du code, mais établit aussi un cadre de confiance et de responsabilité autour de ce que les développeurs livrent
Le carrefour du développement JavaScript
- JavaScript est le langage commun de nombreux programmeurs : il est universel et très accessible
- Ce langage a besoin d’un hub central, une place publique où les développeurs peuvent partager leur travail sans complexité inutile
- Nous pensons que JavaScript restera au cœur du développement logiciel pendant encore de nombreuses années, et JSR vise à soutenir cette pertinence durable
- JSR n’est pas simplement un outil de plus dans l’écosystème ; il représente un changement fondamental dans notre manière de penser la distribution de JavaScript et de TypeScript
3 commentaires
Il me semble qu’on pouvait télécharger jsr depuis npm,, lol
Que PHP crève
Pourquoi parler de PHP dans un article sur JS ?? En tant que personne qui travaille sur un projet PHP, ça me touche.