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 branchemansona/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.jsoutest-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@emberqui nâest pas une chose “virtuelle” ; nous voulons finalement que@ember/debug/inspector-supportsoit fourni parember.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-supportnâa jamais Ă©tĂ© rĂ©solu auparavant et finit par passer dans la fonctionresolveId()du plugin, alors je le rĂ©sous avec un identifiant spĂ©cifique, et la fonctionload()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-supportpour 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.