Я искал способ проверки файлов Handlebars в Discourse. Я нашел команду, которая, кажется, выполняется, но не вносит никаких изменений и не выводит список проблем.
yarn ember-template-lint --fix path/to/files
Не уверен, что она вообще должна работать на данном этапе.
Магия не требуется , но убедитесь, что вы запускаете команду в корневой директории Discourse. Я уже несколько раз попадался на этом.
Сравните:
# в [discourse]/app/assets/javascripts
$ yarn ember-template-lint .
✨ Выполнено за 2.57с.
# в [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 проблем (5 ошибок, 0 предупреждений)
error Команда завершилась с кодом выхода 1.
Также имейте в виду, что будет использоваться наш конфиг (.template-lintrc.js), поэтому он может не сообщать обо всех ожидаемых проблемах, так как некоторые правила в настоящее время отключены.
@justin Я только что понял, что в наших рабочих процессах GitHub Actions для плагинов этот конфиг сейчас не используется. Нам стоит это изменить в ближайшее время.
Если плагин находится в директории plugins, конечно!
$ 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 не может исправить всё, как и eslint. Более того, в отличие от eslint, ember template lint способен исправить лишь несколько вещей.
Он в основном сообщает об ошибках, которые вам придётся исправлять вручную.
Я попытался нарушить правило с помощью самого Discourse. Работает
Я попытался нарушить правило с помощью плагина discourse-custom-wizard, который был в директории Discourse в виде символической ссылки. Не работает
Я попробовал то же самое с плагином poll, который является частью репозитория Discourse. Также я попробовал это с другими плагинами, которые поставляются вместе с Discourse. Работает
Я снова попытался нарушить правило с помощью плагина discourse-custom-wizard, на этот раз скопировав его в папку плагинов Discourse. Не работает
Я попытался нарушить правило с помощью плагина discourse-assign, разместив папку в директории plugins. Не работает
Ах, да. Проблема в том, что ember-template-lint автоматически учитывает .gitignore. При этом unbundled-плагины игнорируются.
Чтобы запустить линтинг шаблонов для всех плагинов:
yarn ember-template-lint --no-ignore-pattern plugins
# или любую другую директорию, например, отдельный плагин:
yarn ember-template-lint --no-ignore-pattern plugins/discourse-calendar