JSR - Un nuevo registro para compartir paquetes de JavaScript
- En los últimos años han aparecido nuevos gestores de paquetes como yarn o pnpm, mejorando la forma de descargar paquetes
- Sin embargo, el registro de paquetes npm, núcleo del ecosistema de JavaScript, casi no ha evolucionado
- La última actualización destacable fue la pestaña "files", añadida hace ya varios años
- Paradójicamente, aunque JavaScript es conocido como un lenguaje que evoluciona activamente, parece estar frenado por un modelo de distribución anticuado
Problemas del sistema de módulos de JavaScript
- Cuando se creó Node, no existía un sistema de módulos estándar para JavaScript, así que el registro npm y Node adoptaron por defecto el sistema CommonJS(
require), que tiene defectos fundamentales
- Era un sistema que no funcionaba en el navegador
- Hace casi 10 años, en 2015, el propio lenguaje adoptó la sintaxis de módulos ES(
import)
- Hoy en día, la mayor parte de JavaScript se escribe usando módulos ES, pero la forma de distribuir estos módulos sigue siendo compleja
- Esto es todavía más cierto cuando TypeScript entra en juego
- Fue esta clara brecha del ecosistema la que dio origen a JSR
- JSR no es otro gestor de paquetes, sino un registro transformador diseñado para reinventar la forma de compartir JavaScript y TypeScript entre runtimes del lado del servidor, navegadores y distintas herramientas
Características y ventajas de JSR
- JSR mejora de forma fundamental el proceso de distribución de código al simplificar complejidades que han afectado a los desarrolladores durante mucho tiempo
- Al ser solo ESM y priorizar TypeScript, JSR elimina los incómodos ajustes de configuración de
package.json y las laberínticas opciones del compilador en tsconfig
- Con un sistema de puntuación de paquetes, JSR fomenta las mejores prácticas para la distribución de código
- De forma similar a pub.dev en la comunidad Dart, da una puntuación más alta a los paquetes que incluyen documentación JSDoc completa para cada símbolo exportado
- Como en otros ecosistemas modernos de programación, como Go o Rust, JSR ofrece por defecto generación automática de documentación
Relación con npm
- JSR es un registro, no otro cliente para el registro npm
- Pero eso no significa renunciar a todo lo relacionado con npm ni cambiar a un ecosistema separado de módulos de JavaScript
- JSR está diseñado para complementar al registro npm, no para reemplazar npm
- Los paquetes de JSR pueden depender de paquetes de npm (por ejemplo, consultar este paquete)
- Además, los paquetes de JSR pueden usarse desde software existente centrado en npm
- Esto se debe a que JSR también funciona como un registro npm que distribuye tarballs compatibles con npm, accesible en npm.jsr.io
- Gracias a esto, los paquetes de JSR pueden incluirse en cualquier software que use npm, yarn o pnpm, e integrarse con registros privados
- Los tarballs npm que distribuye JSR están optimizados
Prioridad en seguridad
- En Deno, la seguridad es la máxima prioridad en el desarrollo con JavaScript
- Aunque ningún registro puede supervisar de forma exhaustiva todo el código publicado, JSR aporta transparencia sobre los publicadores y protege el proceso de publicación
- Al integrar GitHub Actions y tokens OIDC, JSR genera pruebas avanzadas y verificables de procedencia usando niveles de cadena de suministro para artefactos de software, y las almacena en Sigstore
- Esto no solo garantiza la autenticidad del código, sino que también establece confianza y responsabilidad sobre lo que implementan los desarrolladores
Un centro para el desarrollo en JavaScript
- JavaScript es un lenguaje universal y muy accesible, la lengua común de muchos programadores
- Este lenguaje necesita un hub central donde los desarrolladores puedan compartir su trabajo sin complejidad innecesaria: una plaza pública
- Creemos que JavaScript seguirá siendo el centro del desarrollo de software durante muchos años, y JSR busca respaldar esa relevancia continua
- JSR no es simplemente otra herramienta del ecosistema, sino que representa un cambio fundamental en la manera en que pensamos sobre la distribución de JavaScript y TypeScript
3 comentarios
Creo que
jsrse podía descargar desde npm, jajajaQue se muera PHP
¿Por qué meter PHP en un artículo de JS??
Como alguien que está trabajando en un proyecto de PHP, me duele un poco.