Ich habe nach einer Möglichkeit gesucht, Handlebars-Dateien in Discourse zu linsen. Ich habe zwar einen Befehl gefunden, der scheinbar ausgeführt wird, aber keine Änderungen vornimmt oder Probleme auflistet.
yarn ember-template-lint --fix path/to/files
Ich bin mir nicht sicher, ob er in diesem Stadium überhaupt funktionieren soll.
Keine Magie erforderlich , aber stelle sicher, dass du den Befehl im Stammverzeichnis von Discourse ausführst. Das hat mich schon mehrmals erwischt.
Vergleiche:
# in [discourse]/app/assets/javascripts
$ yarn ember-template-lint .
✨ Done in 2.57s.
# in [discourse]
$ yarn ember-template-lint app/assets/javascripts
app/assets/javascripts/discourse/app/templates/tags.hbs
4:0 error Unexpected {{debugger}} usage. no-debugger
4:0 error Usage of triple curly brackets is unsafe no-triple-curlies
3:15 error Incorrect indentation for `d-section` beginning at L1:C0. Expected `{{/d-section}}` ending at L3:C15 to be at an indentation of 0 but was found at 1. block-indentation
2:4 error Incorrect indentation for `{{outlet}}` beginning at L2:C4. Expected `{{outlet}}` to be at an indentation of 2 but was found at 4. block-indentation
1:23 error you must use double quotes in templates quotes
✖ 5 problems (5 errors, 0 warnings)
error Command failed with exit code 1.
Denke auch daran, dass dabei unsere Konfiguration (.template-lintrc.js) verwendet wird. Es werden möglicherweise nicht alle erwarteten Probleme gemeldet, da einige Regeln derzeit deaktiviert sind.
@justin Mir ist gerade aufgefallen, dass unsere GitHub Actions-Workflows für Plugins diese Konfiguration derzeit nicht gemeinsam nutzen. Das sollten wir irgendwann ändern.
Wenn sich das Plugin im Verzeichnis plugins befindet, natürlich!
$ yarn ember-template-lint plugins
plugins/poll/assets/javascripts/discourse/templates/modal/poll-breakdown.hbs
1:22 error you must use double quotes in templates quotes
Ember Template Lint kann nicht alles beheben, genau wie ESLint. Tatsächlich kann Ember Template Lint im Gegensatz zu ESLint nur wenige Dinge automatisch reparieren.
Es meldet vor allem Fehler, die Sie jedoch manuell beheben müssen.
Ah, ja. Das Problem ist, dass ember-template-lint automatisch .gitignore berücksichtigt. Nicht gebündelte Plugins werden ignoriert.
Um das Template-Linting also für alle Plugins auszuführen:
yarn ember-template-lint --no-ignore-pattern plugins
# oder ein beliebiges anderes Verzeichnis, z. B. ein einzelnes Plugin:
yarn ember-template-lint --no-ignore-pattern plugins/discourse-calendar