Dans la dernière version de la configuration de linting standard de Discourse, nous avons activé la règle require-strict-mode d’ember-template-lint. Cela générera une erreur de linting pour tous les fichiers .hbs.
Pour résoudre les avertissements, vous devez convertir tous vos templates de composants, de routes et de connecteurs en fichiers .gjs. Pour faciliter cela, nous avons créé discourse-gjs-codemod, qui s’appuie sur @embroider/template-tag-codemod d’Ember.
Pour utiliser le codemod, assurez-vous d’abord que vos dépendances de linting sont à jour en copiant le dernier package.json du squelette de plugin ou du squelette de thème. Ensuite, exécutez eslint et prettier :
pnpm i
pnpm eslint --fix .
pnpm prettier --write "**/*.{gjs,js,hbs,scss}"
Si des problèmes n’ont pas pu être corrigés automatiquement, résolvez-les manuellement maintenant. N’exécutez pas encore ember-template-lint - cela devrait échouer.
Exécutez maintenant le codemod en utilisant cette commande :
Si des problèmes ne peuvent pas être résolus automatiquement, des informations seront imprimées dans le terminal. Une fois le problème résolu, exécutez à nouveau le codemod.
Pour plus d’informations sur le format de fichier .gjs, consultez le guide officiel :
*) pfaffman@noreno:~/src/pfaffman/discourse-pfaffmanager$ pnpm dlx https://github.com/discourse/discourse-gjs-codemod
Username for 'https://github.com': pfaffman
Password for 'https://pfaffman@github.com':
/home/pfaffman/.cache/pnpm/dlx/txqdpi2aznswmhsvgh3pgqp3te/1971d72469d-323788:
ERROR Command failed with exit code 128: git ls-remote git+ssh://git@github.com/discourse/discourse-gjs-codemod.git HEAD
ERROR: Repository not found.
fatal: Could not read from remote repository.
Terminé en 1.6s en utilisant pnpm v9.15.9
file:///home/pfaffman/.cache/pnpm/dlx/txqdpi2aznswmhsvgh3pgqp3te/1971d8d4970-32e7a4/node_modules/.pnpm/execa@9.6.0/node_modules/execa/lib/return/final-error.js:6
return new ErrorClass(message, options);
^
ExecaError: Command failed with exit code 255: '/home/pfaffman/.cache/pnpm/dlx/txqdpi2aznswmhsvgh3pgqp3te/1971d8d4970-32e7a4/node_modules/.pnpm/@embroider+template-
tag-codemod@1.2.1-unstable.ce3535d_@glimmer+component@2.0.0_handlebars@4._arnanpbg4hbtumvl4wyacggoiu/node_modules/@embroider/template-tag-codemod/dist/src/cli.js' '
--relativeLocalPaths=false' '--nativeRouteTemplates=false' '--nativeLexicalThis=false' '--templateInsertion=end' --addNameToTemplateOnly '--customResolver=/home/pfa
ffman/.cache/pnpm/dlx/txqdpi2aznswmhsvgh3pgqp3te/1971d8d4970-32e7a4/node_modules/.pnpm/discourse-gjs-codemod@https+++codeload.github.com+discourse+discourse-gjs-cod
emod+tar.gz+a4bc_2dxbzd2itovnk6l7sa4geot32y/node_modules/discourse-gjs-codemod/custom-resolver.js' '--renamingRules=/home/pfaffman/.cache/pnpm/dlx/txqdpi2aznswmhsvg
h3pgqp3te/1971d8d4970-32e7a4/node_modules/.pnpm/discourse-gjs-codemod@https+++codeload.github.com+discourse+discourse-gjs-codemod+tar.gz+a4bc_2dxbzd2itovnk6l7sa4geo
t32y/node_modules/discourse-gjs-codemod/rules.js' '--renderTests=test/**/*.js' '--routeTemplates=**/templates/**/*.hbs' '--components=**/components/**/*.hbs'
Mais il semble qu’il ait converti tous les modèles sauf quelques-uns, et bien que je ne comprenne pas encore pourquoi, je ne suis pas surpris, car ils contiennent des éléments bizarres et j’étais en train de les réécrire de toute façon.
Je pense que le message de peerdependency est probablement juste un avertissement qui peut être ignoré aux fins du codemod.
Je ne suis pas sûr de l’autre erreur. Y a-t-il quelque chose de plus utile plus haut dans le journal ? S’agit-il d’un thème/plugin public que vous pourriez partager ?
Oui. Je pense que les erreurs sont toutes fallacieuses. Seules quelques choses n’ont pas été converties. Je ne sais pas pourquoi, mais comme je l’ai dit, je prévoyais de les réécrire de toute façon.
Je pense qu’il y en a une douzaine ou plus qu’il a réussi à réécrire, donc c’est un miracle absolu !
Je vais bientôt l’essayer sur d’autres choses publiques.