¡Adiós, Webpack Encore! ¡Hola, AsssetMapper!

Adios, webpack
Solucionex
31
Ago 23

¿Alguna vez has querido escribir Javascript moderno y CSS sin la necesidad de utilizar un bundle como Webpack? Pues ahora, con el nuevo componente presentado con la versión de Symfony 6.3, es posible. Vamos a hablar de AssetMapper y qué supone este nuevo componente en el desarrollo de nuestros proyectos Symfony.

Hasta el momento, todo lo relacionado al uso avanzado de CSS y Javascript se gestionaba con Webpack gracias al bundle WebpackEncore haciendo uso de Node.js. Esta herramienta nos permitía tener un Webpack preconfigurado con funciones de compilación para CSS y JS, integración de Typescript, React, Vue, etc. Ahora, con la llegada del nuevo componente AssetMapper, vamos a poder hacer parte de ese trabajo directamente con PHP sin la complejidad de Webpack y Node.js.

El componente AssetMapper te permite escribir Javascript moderno y CSS sin la complejidad de utilizar un bundler...

 

¿Qué es y qué hace AssetMapper?

El componente AssetMapper nos permitirá hacer uso de nuestro Javascript y CSS sin necesidad de compilación, mapeando los directorios de assets y haciéndolos accesibles desde un directorio público con sus nombres de archivos "versionados".

AssetMapper se compone principalmente de dos características:

  • Mapeado y versionado de assets: Todos los archivos contenidos en el directorio /assets se ponen a disposición del público y son versionados.
  • Importmaps: Característica nativa de los navegadores que hace facilita el uso de la declaración import de Javascript sin la necesidad de un sistema de compilación. La soportan todos los navegadores y es un estandar de la W3C.

 

Diferencias con WebpackEncore

Se diferencia del componente WebpackEncore en que, por el momento, no podemos hacer uso de esta función para utilizar tecnologías como Typescript, React o Vue que necesitan de transpilación y compilación para su completo y/o correcto funcionamiento. En la siguiente tabla vemos la diferencias principales:

 

  Encore AssetMapper
¿Disponible para producción? si si
¿Versión estable? si experimental
Requisitos Node.js PHP
¿Requiere compilación? si no
¿Funciona en todos los navegadores? si si
¿Soporta Stimulus/UX? si si
¿Soporta Sass/Tailwind? si si
¿Soporta React, Vue o Svelte? si si1
¿Soporta TypeScript? si no

 

Nota1: React (JSX) puede compilarse directamente a Javascript nativo pero se recomienda utilizar Encore en el caso de no utilizarlo de manera puntual, mientras que en el caso de Vue, también puede compilarse directamente a Javascript nativo y funcionará con el componente AssetMapper, pero en el caso de querer utilizar los "single-file componentes" se necesitará Encore.

 

Profundizando en AssetMapper

Si quieres aprender más sobre este nuevo componente y empezar a utilizarlo en tus proyectos puedes hacer uso de los siguientes enlaces:

 

Conclusión

Este nuevo componente, junto con otras tecnologías disruptivas como las implementaciones de Hotwire para SymfonyMercure o el nuevo HTMX, suponen un paso más en lo que parece una etapa de "backenización" en el escenario del desarrollo web actual donde el ecosistema Javascript parece reinar.