Semaine 8 â Une nouvelle version pour ember-test-selectors
#web #emberjs #embertestselectors #pnpm #workspaces #babel #viteplugins #rollupplugins #emberinspector
ember-test-selectors 7.1.0 est disponible, ainsi que strip-test-selectors 1.0.0. AprĂšs avoir clĂŽturĂ© ce sujet, j’ai aussi pu m’intĂ©resser Ă quelques issues sur ember-vite-codemod et faire du pair avec Chris sur notre prochain grand chantier : faire fonctionner Ember Inspector avec Vite.
Astuces tirĂ©es d’ember-test-selectors #
Ă propos de workspace:* #
ember-test-selectors est désormais un monorepo avec la structure suivante :
- ember-test-selectors : l’addon classique qui existait auparavant
- strip-test-selectors : les fonctions de transformation que vous pouvez configurer directement dans votre config Babel lorsque votre application utilise Embroider+Vite
- tests :
- classic-app : teste la compatibilitĂ© de l’addon classique
- node-tests : tests unitaires pour le plugin qui supprime les
data-test-*des objets JS - vite-app : teste la configuration pour strip-test-selectors
Travailler avec des monorepos nĂ©cessite de maĂźtriser le concept de workspaces. Pour simplifier, c’est un protocole qui permet de dĂ©clarer les diffĂ©rents packages contenus dans votre monorepo.
Si vous avez dĂ©jĂ explorĂ© un monorepo d’addon v2 utilisant pnpm, vous avez peut-ĂȘtre vu la syntaxe "my-v2-addon": "workspace:*" dans le package.json de l’application de test. Cette syntaxe signifie « utilisez la version locale de my-v2-addon, quelle qu’elle soit », donc vous n’avez pas besoin de gĂ©rer manuellement les mises Ă jour de version Ă l’intĂ©rieur d’un monorepo.
Ce que vous ne savez peut-ĂȘtre pas, cependant, c’est que ce concept est ce que pnpm appelle les alias de workspace, et qu’il y a une chose trĂšs importante Ă savoir Ă leur sujet : les alias de workspace sont interprĂ©tĂ©s et remplacĂ©s lors du pnpm publish. Ăa signifie que tant que vous utilisez pnpm publish pour publier vos packages publics, vous pouvez utiliser en toute sĂ©curitĂ© workspace:* Ă l’intĂ©rieur d’un package public qui dĂ©pend d’un autre package du monorepo (par exemple, ember-test-selectors a une dĂ©pendance Ă strip-test-selectors).
Utiliser Babel dans une application Vite #
La nouvelle documentation pour strip-test-selectors explique comment configurer Babel dans votre application Embroider+Vite pour reproduire le comportement de l’addon classique. Si vous avez une application Embroider+Vite, vous avez nĂ©cessairement dĂ©jĂ un fichier babel.config.cjs. C’est forcĂ©ment le cas, car toute application Embroider+Vite fraĂźchement créée repose sur des plugins Babel dĂšs le dĂ©part, ça fait partie du blueprint de l’application.
Vous ĂȘtes-vous dĂ©jĂ demandĂ© comment le babel.config.cjs finit par ĂȘtre utilisĂ©, cependant ? Si vous gĂ©nĂ©rez une simple application Vite avec pnpm create vite, elle n’utilisera pas Babel par dĂ©faut ; vous devez indiquer Ă Vite que Babel doit ĂȘtre exĂ©cutĂ© Ă un moment donnĂ©. La rĂ©ponse se trouve dans vite.config.mjs :
// autres imports...
import { babel } from '@rollup/plugin-babel';
export default defineConfig({
plugins: [
// autres plugins...
babel({ babelHelpers: 'runtime', extensions }),
],
});
Le plugin babel de @rollup/plugin-babel est l’Ă©lĂ©ment qui prend en compte le fichier de configuration Babel. Les plugins Vite sont basĂ©s sur l’interface des plugins Rollup avec quelques options spĂ©cifiques Ă Vite en plus. Par consĂ©quent, les plugins Rollup sont compatibles avec Vite et peuvent ĂȘtre utilisĂ©s tels quels dans la config Vite. C’est la raison pour laquelle, si vous Ă©crivez un plugin Vite qui n’utilise que des fonctionnalitĂ©s hĂ©ritĂ©es de Rollup, la convention est de l’appeler un plugin Rollup.
Structure d’Ember Inspector #
- Ember Inspector est une application Ember qui s’affiche dans une iFrame et rĂ©cupĂšre des informations de l’application Ember principale affichĂ©e sur la page.
- Pour permettre la communication, il injecte un module de dĂ©bogage sur la page. Ce module est responsable de l’accĂšs et du transfert des donnĂ©es requises vers l’inspecteur.
Cette approche ne fonctionne pas avec Vite, car elle repose sur des modules AMD et des variables globales. Nous devons trouver un nouveau moyen de permettre Ă l’inspecteur de communiquer avec une application Embroider+Vite. Ce travail comprend plusieurs Ă©tapes que nous avons abordĂ©es cette semaine  :
- Comprendre comment les informations sont communiquées pour une application Ember classique
- Définir le nouveau protocole pour communiquer les informations depuis une application Embroider+Vite
- Implémenter ce protocole
L’Ember Inspector est un sujet important pour l’Ember Initiative. Ce sera notre principal objectif Ă partir de la semaine prochaine. L’objectif actuel, avec le budget dont nous disposons, est de rĂ©diger la RFC. Je continuerai Ă©galement Ă travailler en parallĂšle sur quelques issues ouvertes que nous avons sur ember-vite-codemod. Pour que l’Ember Initiative puisse continuer, nous avons besoin de votre soutien đčâ€ïž Contactez Mainmatter.