Blog d'une Belette Sauvage

L'aventure Ember Initiative đŸč❀ Semaine 10

· 1055 mots · 5 minutes de lecture
Catégories Developement
Étiquettes web ember ember-initiative-journey

Semaine 10 – Ember Inspector feat. Embroider

#web #emberjs #ember_inspector #vite #embroider #addons #blog_post

Je publie ce rĂ©sumĂ© avec quelques jours de retard, car je n’ai pas pu m’en occuper vendredi dernier, mais le voici. Malheureusement, ce pourrait ĂȘtre ma derniĂšre mise Ă  jour hebdomadaire pour l’Ember Initiative pendant un certain temps, Ă  moins que l’Initiative ne reçoive davantage de soutien. Mais commençons par les bonnes nouvelles et revenons Ă  ça plus tard.

Ember Inspector #

Exécution de la preuve de concept #

Mon objectif principal cette semaine Ă©tait de faire fonctionner l’Ember Inspector pour une application Vite — en d’autres termes, faire tourner la preuve de concept de Chris de mon cĂŽtĂ©.

Vous devez avoir les deux branches de [Chris] (le cĂŽtĂ© ember.js et le cĂŽtĂ© ember-inspector) fonctionnant ensemble. En d’autres termes, vous devez pnpm link la branche mansona/ember.js Ă  une application Ember que vous souhaitez inspecter, servir cette application Ember, exĂ©cuter localement la branche mansona/ember-inspector, et lancer le script pour charger cet inspecteur local dans l’application que vous servez.

Utiliser une version locale d’ember-source n’est pas trivial : ça nĂ©cessite de builder ember.js. Une section du guide de contribution est dĂ©diĂ©e Ă  ça. Notez que par pnpm link ../../path/to/ember-source, on entend le chemin vers votre dĂ©pĂŽt local ember.js contenant le package.json et le dossier dist que vous avez construit. Personnellement, j’ai dĂ» me battre avec mon lien local vers ember.js : j’étais bloquĂ©e par des erreurs sans rapport avec l’inspecteur, et pour avancer, j’ai dĂ» commenter les invocations de composants dans le template de mon application Vite pour Ă©viter qu’elles ne dĂ©clenchent des problĂšmes. Mais c’était tout ce qu’il fallait pour faire fonctionner la preuve de concept 🎉

En utilisant cette base, j’ai pu commencer Ă  explorer le code de l’inspecteur et me familiariser avec les premiers problĂšmes que nous devons corriger. 💡 Le dĂ©pĂŽt ember-inspector contient un dossier ember_debug, qui se construit en un script ensuite injectĂ© dans la page principale pour crĂ©er le pont entre l’inspecteur et l’application. Un point bĂȘte sur lequel j’ai butĂ© Ă©tait la prise en compte des modifications locales que j’apportais au dossier ember_debug. J’ai dĂ» exĂ©cuter pnpm build sur le dossier lui-mĂȘme plutĂŽt que de lancer la commande de build depuis la racine. Ce n’est qu’alors que mes modifications Ă©taient appliquĂ©es lorsque j’utilisais pnpm serve:bookmarklet pour charger l’inspecteur localement.

Le brouillon sur Embroider #

Le rĂ©sultat de la semaine est une PR sur le dĂ©pĂŽt Embroider qui crĂ©e le mĂȘme objet, emberInspectorLoader, que celui que Chris a créé cĂŽtĂ© ember.js dans la preuve de concept. L’approche n’était pas Ă©vidente, car il existe plusieurs façons de procĂ©der.

  • Un fichier virtuel classique ? Embroider inclut un pattern pour crĂ©er des fichiers virtuels comme vendor.js ou test-support.css, qui sont Ă©mis en tant que fichiers rĂ©els dans la construction Rollup. Je suis assez familiĂšre avec cette partie d’Embroider, car j’en ai Ă©crit quelques-uns pendant l’Ember Initiative en 2024. Cependant, il y avait quelque chose d’étrange Ă  utiliser ce systĂšme central pour une fonctionnalitĂ© de compatibilitĂ© avec classique, surtout avec l’espace de noms @ember qui n’est pas une chose “virtuelle” ; nous voulons finalement que @ember/debug/inspector-support soit fourni par ember.js. Nous avons donc dĂ©cidĂ© d’abandonner cette approche.

  • Adaptateur de compatibilitĂ© ember-source Embroider “compat” est la partie d’Embroider qui gĂšre la compatibilitĂ© avec les fonctionnalitĂ©s classiques. Il inclut un concept d’adaptateur de compatibilitĂ© qui permet de corriger les addons. Ce systĂšme peut ĂȘtre utilisĂ© pour crĂ©er un nouveau fichier dans les versions d’ember-source qui supportent Vite, de sorte que les utilisateur·rices de Vite de 3.28 Ă  la derniĂšre version aient ce script supplĂ©mentaire qui fournit emberInspectorLoader. En plus de la simplicitĂ© relative, un autre avantage de cette approche est que nous pouvons ajuster le script en fonction de la version d’Ember. Par exemple, Ember < 4.8 n’avait pas d’export pour @ember/enumerable/mutable, donc si l’utilisateur·rice utilise une version entre 3.28 (inclus) et 4.8 (exclu), il y a un objet utilisĂ© par l’inspecteur que nous devons obtenir d’ailleurs. Le problĂšme, cependant, est que les adaptateurs de compatibilitĂ© ne corrigent que les addons v1, et Ă  partir de 6.1, ember-source est devenu v2, donc les adaptateurs de compatibilitĂ© ne couvrent pas tout ce dont nous avons besoin.

  • Un plugin Vite dĂ©diĂ© La derniĂšre approche que j’ai essayĂ©e est un plugin Vite dĂ©diĂ©, inspectorSupport(). C’est une version extra-simple des fichiers virtuels classiques. Si @ember/debug/inspector-support n’a jamais Ă©tĂ© rĂ©solu auparavant et finit par passer dans la fonction resolveId() du plugin, alors je le rĂ©sous avec un identifiant spĂ©cifique, et la fonction load() pour cet identifiant retourne le script dont nous avons besoin. L’utilisation de cette approche en combinaison avec l’adaptateur de compatibilitĂ© pour la plage 3.28 -> 4.8 permet de rĂ©soudre @ember/debug/inspector-support pour chaque version.

L’article de blog sur l’audit des addons #

Lors de la Semaine 4, j’ai dĂ©crit comment j’ai utilisĂ© l’API d’Ember Observer pour me faire une idĂ©e de l’état des 100 addons Ember les plus populaires.

Cette semaine, cet audit a Ă©tĂ© conclu par un article de blog : Getting ready for Vite! The status of the top 100 Ember addons. L’article de blog ne traite pas seulement des rĂ©sultats de l’audit, mais aussi de son impact sur notre feuille de route pour l’Ember Initiative. Par exemple, grĂące Ă  cet audit, nous avons vu Ă  quel point ember-css-modules et ember-test-selectors sont importants pour la communautĂ©, ce qui explique pourquoi j’ai travaillĂ© sur ces deux addons (principalement lors des Semaines 5 et 7).

De plus, l’article de blog inclut des sections clarifiant la situation autour de Webpack et FastBoot, alors si ça vous intĂ©resse, n’hĂ©sitez pas Ă  y jeter un Ɠil.

Nous avons besoin de soutien #

Les trois premiers mois touchent Ă  leur fin, et malheureusement, nous devons ralentir l’Ember Initiative. Nous travaillons activement Ă  trouver de nouveaux sponsors pour financer le dĂ©veloppement des 3 prochains mois. Vous pouvez nous aider Ă  y parvenir :

  • En partageant les publications de Mainmatter sur les appels Ă  sponsor sur les rĂ©seaux sociaux.

  • En parlant de l’Ember Initiative autour de vous et dans votre entreprise.

  • En partageant votre expĂ©rience si notre travail vous a aidĂ© Ă  migrer votre application Ember vers Vite.



Nous avons accompli tant de choses en 10 semaines de travail. Je suis trĂšs enthousiaste quant Ă  l’impact sur la communautĂ© Ember, et j’espĂšre sincĂšrement que l’Ember Initiative pourra continuer avec davantage de soutien.


Intro, Semaine 9, Petite pause