Stavo cercando un modo per analizzare i file Handlebars in Discourse. Ho trovato un comando che sembra funzionare, ma non apporta modifiche né elenca problemi.
yarn ember-template-lint --fix path/to/files
Non sono sicuro che dovrebbe funzionare in questa fase.
Nessuna magia richiesta , ma assicurati di eseguire il comando nella directory principale di Discourse. Mi è capitato già un paio di volte.
Confronta:
# in [discourse]/app/assets/javascripts
$ yarn ember-template-lint .
✨ Fatto in 2.57s.
# in [discourse]
$ yarn ember-template-lint app/assets/javascripts
app/assets/javascripts/discourse/app/templates/tags.hbs
4:0 error Utilizzo imprevisto di {{debugger}}. no-debugger
4:0 error L'uso delle triple parentesi graffe non è sicuro no-triple-curlies
3:15 error Indentazione errata per `d-section` che inizia a L1:C0. Si aspettava che `{{/d-section}}` che termina a L3:C15 fosse all'indentazione 0, ma è stato trovato a 1. block-indentation
2:4 error Indentazione errata per `{{outlet}}` che inizia a L2:C4. Si aspettava che `{{outlet}}` fosse all'indentazione 2, ma è stato trovato a 4. block-indentation
1:23 error Devi usare le virgolette doppie nei template quotes
✖ 5 problemi (5 errori, 0 avvisi)
error Comando non riuscito con codice di uscita 1.
Inoltre, tieni presente che verrà utilizzata la nostra configurazione (.template-lintrc.js), quindi potrebbe non segnalare tutti i problemi previsti, poiché alcune regole sono attualmente disabilitate.
@justin Mi sono appena reso conto che i nostri workflow GitHub Actions per i plugin non condividono attualmente questa configurazione. Dovremmo cambiarlo a un certo punto.
Ember template lint non può risolvere tutto, proprio come eslint, e in realtà Ember template lint può correggere solo poche cose, a differenza di eslint.
Rileverà principalmente errori, ma dovrai correggerli manualmente.
Ho provato a violare una regola con lo stesso Discourse. Funziona
Ho provato a violare una regola con il plugin discourse-custom-wizard, che si trovava nella directory di Discourse come collegamento simbolico. Non funziona
Ho provato la stessa cosa con il plugin poll, che fa parte del repository di Discourse. Ho anche provato con altri plugin forniti con Discourse. Funziona
Ho provato di nuovo a violare una regola con il plugin discourse-custom-wizard, questa volta copiandolo nella cartella dei plugin di Discourse. Non funziona
Ho provato a violare una regola con il plugin discourse-assign, posizionando la cartella in plugins. Non funziona
Ah, sì. Il problema è che ember-template-lint tiene automaticamente conto di .gitignore. Di conseguenza, i plugin non inclusi nel bundle vengono ignorati.
Quindi, per eseguire il linting dei template su tutti i plugin:
yarn ember-template-lint --no-ignore-pattern plugins
# oppure qualsiasi altra directory, ad esempio un singolo plugin:
yarn ember-template-lint --no-ignore-pattern plugins/discourse-calendar