Tras la exitosa modernización de los sistemas de compilación del tema y de los complementos durante el último año, ahora estamos listos para avanzar con una actualización similar en el núcleo de Discourse.
A pesar de tratarse de una revisión completa del sistema de compilación del núcleo, este cambio está diseñado para ser totalmente compatible con versiones anteriores. Las instalaciones de producción de Discourse no deberían notar ningún cambio. El sistema de activos precompilados seguirá significando que sus servidores no necesitan compilar los activos del núcleo por sí mismos.
Tecnologías
Estamos pasando de ember-cli/webpack a rolldown, un empaquetador basado en Rust para JavaScript. Rolldown es el corazón de la última versión de Vite, por lo que estamos en buena compañía y alineados con la dirección del ecosistema de Ember.
Todo el JavaScript de Discourse ahora se compila a módulos ES nativos, lo que mejora el rendimiento en tiempo de ejecución y desbloquea varias optimizaciones futuras.
Rendimiento de la compilación
En desarrollo, las compilaciones deberían ser aproximadamente un 80% más rápidas que antes. En mi máquina[1], esto ha reducido el tiempo de arranque en desarrollo de ~30 s a ~5 s. Esperamos que el rendimiento mejore aún más en el futuro, ya que aún hay algunas partes de la compilación que dependen de tecnologías más antiguas como Babel.
Experiencia del desarrollador
Como parte de este cambio, hemos decidido dejar de usar un proxy frente a Discourse para el desarrollo. El desarrollo ahora debe realizarse directamente contra el servidor de Rails.
bin/ember-cli -u ha sido reemplazado por bin/dev. Esto iniciará Rails en :3000 y ejecutará la compilación de rolldown en segundo plano. La salida de registro de ambos procesos se mostrará con un prefijo apropiado. Debería visitar :3000 en su navegador. :4200 ya no servirá nada.
Para ayudar con la migración, bin/ember-cli ahora es un adaptador compatible con versiones anteriores. Mostrará información de ayuda e iniciará un servidor ligero en :4200 con instrucciones para moverse a :3000.
Si prefiere iniciar Rails y la compilación de JS como comandos separados, aún puede hacerlo. Los comandos de arranque de Rails no han cambiado, y el empaquetador rolldown se puede ejecutar en modo de vigilancia usando bin/dev --only ember.
Advertencias de compilación desactualizada
Si la compilación actual en disco fue producida por el empaquetador de desarrollo rolldown, y ese proceso de empaquetado ya no se está ejecutando, Rails lanzará un error para advertirle que los activos están desactualizados. Esto se aplica al modo de desarrollo y a las pruebas de sistema.
Este error no se lanzará si usa el comando de compilación de un solo paso (pnpm build), como hacemos en CI.
¡Gracias!
Este trabajo ha sido posible gracias a los equipos de Ember/Embroider y a The Ember Initiative. ¡Un agradecimiento especial a @real_ate por su trabajo con nosotros en este proyecto! ![]()
MacBook Pro con chip M3 Pro ↩︎