La vida con ESM

ESM, que significa módulos ES, que significa módulos JavaScript. Me gusta importy amigos.

Los navegadores lo admiten hoy en día. Hay muchos matices, pero siempre que hayas abandonado IE, la puerta está bastante abierta.

Antes de ESM, la situación para los proyectos JavaScript era:

  1. Tenemos paquetes que necesitamos usar desde npm.
  2. Los instalaremos desde npm con anticipación con nuestro package.jsony npm installdemás.
  3. Escribiremos importdeclaraciones que no son válidas para ESM por algún motivo (conveniencia del desarrollador, supongo) y asumiremos que estamos importando paquetes desde una node_modulescarpeta local.
  4. Nuestro paquete sabrá qué hacer con esas importaciones no válidas.
  5. Todo esto está bien, porque se dice en la calle que la agrupación todavía es necesaria para el rendimiento, y de todos modos hace otras cosas que queremos, como ejecutar Babel y sus amigos.

Ahora que podemos contar más con ESM, la historia está cambiando un poco y todas esas cosas están siendo cuestionadas.

  • ¿Qué pasaría si no tuviéramos que hacerlo npm install?
  • ¿Qué pasa si no necesitamos un paquete?
  • ¿Qué pasa si el rendimiento es bueno, entre HTTP/2+, CDN globales, navegadores que hacen cosas sofisticadas, etc.?
  • ¿Qué pasaría si tal vez no deberíamos compilar tanto código porque estamos compilando demasiado?

Estamos viendo herramientas de próxima generación que se apoyan en todo eso. Snowpack 3 acaba de ser lanzado y mira esto:

Ese React (con JSX), escrito tal como es normalmente, y no había npm installningún node_modulesdirectorio ni paso de compilación. Pero sigue siendo un servidor de desarrollo y recargando. Muy liviano. Muy refrescante.

Acabo de escuchar un episodio reciente de Toolsday donde Una y Chris conversaron con Jason Miller sobre WMR, del cual no había oído hablar hasta entonces. Se siente muy espiritualmente similar a Snowpack/Skypack. Con WMR, puede usar paquetes npm sin tener que instalarlos, o escribir con cosas como módulos JSX, TypeScript o CSS, y obtener un montón de comodidades para el desarrollo, como un servidor, recarga en caliente, etc.

Claramente hay algo en el agua aquí, y creo que algo se está inclinando hacia el ESM.

Incluso en el lado de Node.js, ESM está sucediendo. Aquí está Sindre Sorhus, que tiene más de 1000 paquetes npm (!):

A finales de abril de 2021, Node.js 10 llegará al final de su vida útil, lo que significa que los mantenedores de paquetes pueden apuntar a Node.js 12. Esta versión de Node.js tiene soporte completo para módulos JavaScript, también conocidos como ESM.

Está planeando trasladar casi todos esos 1000 paquetes a ESM en 2021. No es una configuración "dual" en la que se generan múltiples formatos diferentes... solo ESM, y está animando a todos a hacer lo mismo. Creo que este impulso hacia el uso directo de ESM en el navegador aumenta en gran medida cuando el ecosistema npm está haciendo exactamente lo mismo.

Y cuando necesita agrupar porque, digamos, algo en npm aún no está listo para ESM, los paquetes de próxima generación se están volviendo populares rápidamente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir