Je cherchais un moyen de vérifier les fichiers Handlebars dans Discourse. J’ai trouvé une commande qui semble s’exécuter, mais qui n’apporte aucune modification ni ne liste les problèmes.
yarn ember-template-lint --fix path/to/files
Je ne sais pas si cela est censé fonctionner à ce stade.
Aucune magie requise mais assurez-vous d’exécuter la commande à la racine du répertoire de Discourse. Cela m’est déjà arrivé à plusieurs reprises.
Comparez :
# dans [discourse]/app/assets/javascripts
$ yarn ember-template-lint .
✨ Terminé en 2,57 s.
# dans [discourse]
$ yarn ember-template-lint app/assets/javascripts
app/assets/javascripts/discourse/app/templates/tags.hbs
4:0 error Utilisation inattendue de {{debugger}}. no-debugger
4:0 error L'utilisation de doubles accolades est dangereuse no-triple-curlies
3:15 error Indentation incorrecte pour `d-section` commençant à L1:C0. L'élément de fermeture `{{/d-section}}` se trouvant à L3:C15 devrait avoir une indentation de 0, mais on en trouve une de 1. block-indentation
2:4 error Indentation incorrecte pour `{{outlet}}` commençant à L2:C4. `{{outlet}}` devrait avoir une indentation de 2, mais on en trouve une de 4. block-indentation
1:23 error Vous devez utiliser des guillemets doubles dans les modèles quotes
✖ 5 problèmes (5 erreurs, 0 avertissements)
error La commande a échoué avec le code de sortie 1.
De plus, gardez à l’esprit qu’il utilisera notre configuration (.template-lintrc.js), il est donc possible qu’il ne signale pas tous les problèmes attendus, car certaines règles sont actuellement désactivées.
@justin Je viens de réaliser que nos workflows GitHub Actions pour les plugins ne partagent actuellement pas cette configuration. Nous devrions y remédier à un moment donné.
Ember template lint ne peut pas tout corriger, tout comme eslint, et en réalité, ember template lint ne peut corriger que quelques éléments, contrairement à eslint.
Il signalera principalement des erreurs, mais vous devrez les corriger manuellement.
J’ai essayé de briser une règle avec le plugin discourse lui-même. Ça marche
J’ai essayé de briser une règle avec le plugin discourse-custom-wizard, qui se trouvait dans le répertoire discourse sous forme de lien symbolique. Ça ne marche pas
J’ai fait la même chose avec le plugin poll, qui fait partie du dépôt discourse. J’ai également essayé avec d’autres plugins livrés avec discourse. Ça marche
J’ai essayé de briser une règle avec le plugin discourse-custom-wizard à nouveau, cette fois en le copiant dans le dossier des plugins de discourse. Ça ne marche pas
J’ai essayé de briser une règle avec le plugin discourse-assign en plaçant le dossier dans plugins. Ça ne marche pas
Ah, oui. Le problème est que ember-template-lint prend automatiquement en compte .gitignore. Les plugins non regroupés sont donc ignorés.
Ainsi, pour exécuter la vérification des modèles sur tous les plugins :
yarn ember-template-lint --no-ignore-pattern plugins
# ou tout autre répertoire, par exemple un seul plugin :
yarn ember-template-lint --no-ignore-pattern plugins/discourse-calendar