Suite à la modernisation réussie des systèmes de construction du thème et des plugins au cours de l’année écoulée, nous sommes désormais prêts à procéder à une mise à niveau similaire au cœur de Discourse.
Bien qu’il s’agisse d’une refonte complète du système de construction principal, ce changement vise à être entièrement rétrocompatible. Les installations en production de Discourse ne devraient remarquer aucune modification. Le système d’actifs précompilés continuera à garantir que vos serveurs n’ont pas besoin de construire eux-mêmes les actifs principaux.
Technologies
Nous passons de ember-cli/webpack à rolldown, un bundler JavaScript basé sur Rust. Rolldown est au cœur de la dernière version de Vite, nous sommes donc en bonne compagnie et alignés avec la direction de l’écosystème Ember.
Tout le JavaScript de Discourse est désormais construit en modules ES natifs, ce qui améliore les performances d’exécution et ouvre la voie à de nombreuses optimisations futures.
Performances de construction
En développement, les constructions devraient être environ 80 % plus rapides qu’auparavant. Sur ma machine[1], cela a réduit le temps de démarrage du développement d’environ 30 s à environ 5 s. Nous nous attendons à ce que les performances s’améliorent encore à l’avenir, car certaines parties de la construction reposent encore sur des technologies plus anciennes comme Babel.
Expérience développeur
Dans le cadre de cette transition, nous avons décidé d’arrêter d’utiliser un proxy devant Discourse pour le développement. Le développement doit désormais être effectué directement sur le serveur Rails.
bin/ember-cli -u a été remplacé par bin/dev. Cela lancera Rails sur le port :3000 et exécutera la construction rolldown en arrière-plan. La sortie des journaux des deux processus sera affichée avec un préfixe approprié. Vous devez vous rendre sur :3000 dans votre navigateur. Le port :4200 ne servira plus rien.
Pour faciliter la migration, bin/ember-cli est désormais un shim rétrocompatible. Il affichera des informations d’aide et lancera un serveur léger sur le port :4200 avec des instructions pour passer au port :3000.
Si vous préférez lancer Rails et la construction JS comme commandes séparées, vous pouvez toujours le faire. Les commandes de démarrage de Rails restent inchangées, et le bundler rolldown peut être exécuté en mode surveillance avec bin/dev --only ember.
Avertissements de construction obsolète
Si la construction actuellement sur le disque a été produite par le bundler de développement rolldown, et que ce processus de bundler n’est plus en cours d’exécution, Rails affichera une erreur pour vous avertir que les actifs sont obsolètes. Cela s’applique au mode développement et aux tests système.
Cette erreur ne sera pas levée si vous utilisez la commande de construction ponctuelle (pnpm build) comme nous le faisons dans l’intégration continue (CI).
Remerciements !
Ce travail a été rendu possible par les équipes Ember et Embroider, ainsi que par The Ember Initiative. Un remerciement particulier à @real_ate pour son travail avec nous sur ce projet ! ![]()
MacBook Pro avec puce M3 Pro ↩︎