ESM, que significa módulos ES, que significa módulos JavaScript. Me gusta, import
y amigos.
Los navegadores lo admiten en estos días. Hay muchos matices, pero siempre que haya dejado caer IE, la puerta está bastante abierta.
Antes de ESM, la situación de los proyectos de JavaScript era:
- Tenemos paquetes que necesitamos usar de npm.
- Los instalaremos desde npm antes de tiempo con nuestro
package.json
,npm install
Y qué no. - Escribiremos
import
declaraciones que son ESM inválido por alguna razón (conveniencia del desarrollador, supongo) y supongo que estamos importando paquetes de un localnode_modules
carpeta. - Nuestro empaquetador sabrá qué hacer con esas importaciones no válidas.
- Todo esto está bien, porque se dice en la calle que la agrupación todavía es necesaria para el rendimiento, y hace otras cosas que queremos de todos modos, 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.
- ¿Y 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 elegantes, etc.?
- ¿Y si tal vez no deberíamos estar compilando 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:
Que React (con JSX), se escribe como normalmente, y no había npm install
, No node_modules
directorio y ningún paso de compilación. Pero, sigue siendo un servidor de desarrollo y se está recargando. Muy liviano. Muy refrescante.
Acabo de escuchar un episodio reciente de Toolsday en el que Una y Chris charlaron con Jason Miller sobre WMR, del que no había oído hablar hasta entonces. Se siente muy similar espiritualmente a Snowpack / Skypack. Con WMR, puede usar paquetes npm sin tener que instalarlos, o escribir con cosas como JSX, TypeScript o módulos CSS, y obtener un montón de comodidades de desarrollo, como un servidor, recarga en caliente, etc.
Algo está claramente en el agua aquí, y creo que algo se inclina hacia ESM.
Incluso en el lado de Node.js, ESM está sucediendo. Aquí está Sindre Sorhus, que tiene más de 1000 paquetes npm (!):
A fines de abril de 2021, Node.js 10 estará 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 1,000 paquetes a ESM en 2021. No es una configuración “dual” en la que genere 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 se genera en gran medida cuando el ecosistema npm está haciendo exactamente lo mismo.
Y cuando necesite empaquetar porque, digamos, algo en npm aún no está listo para ESM, entonces los paquetes de próxima generación comienzan a fumar rápidamente.