Estava procurando uma maneira de fazer lint em arquivos Handlebars no Discourse. Encontrei um comando que parece ser executado, mas não faz nenhuma alteração nem lista problemas.
yarn ember-template-lint --fix path/to/files
Não tenho certeza se deveria funcionar mesmo neste momento.
Nenhuma mágica necessária , mas certifique-se de executar o comando no diretório raiz do Discourse. Isso já me pegou algumas vezes.
Compare:
# em [discourse]/app/assets/javascripts
$ yarn ember-template-lint .
✨ Concluído em 2,57s.
# em [discourse]
$ yarn ember-template-lint app/assets/javascripts
app/assets/javascripts/discourse/app/templates/tags.hbs
4:0 erro Uso inesperado de {{debugger}}. no-debugger
4:0 erro Uso de chaves triplas é inseguro no-triple-curlies
3:15 erro Indentação incorreta para `d-section` começando em L1:C0. Esperado que `{{/d-section}}` terminando em L3:C15 estivesse com indentação de 0, mas foi encontrada em 1. block-indentation
2:4 erro Indentação incorreta para `{{outlet}}` começando em L2:C4. Esperado que `{{outlet}}` estivesse com indentação de 2, mas foi encontrada em 4. block-indentation
1:23 erro Você deve usar aspas duplas nos templates quotes
✖ 5 problemas (5 erros, 0 avisos)
erro: Comando falhou com código de saída 1.
Além disso, lembre-se de que ele usará nossa configuração (.template-lintrc.js), então pode não relatar todos os problemas esperados, pois algumas regras estão atualmente desabilitadas.
@justin, acabei de perceber que nossos workflows do GitHub Actions para plugins atualmente não compartilham essa configuração. Deveríamos mudar isso em algum momento.
O Ember template lint não consegue corrigir tudo, assim como o eslint, e na verdade o Ember template lint só consegue corrigir algumas coisas, diferentemente do eslint.
Ele principalmente relata erros, mas você precisa corrigi-los manualmente.
Ah, sim. O problema é que o ember-template-lint considera automaticamente o .gitignore. E plugins não empacotados são ignorados.
Portanto, para executar a verificação de lint em todos os plugins:
yarn ember-template-lint --no-ignore-pattern plugins
# ou qualquer outro diretório, por exemplo, um único plugin:
yarn ember-template-lint --no-ignore-pattern plugins/discourse-calendar