Я слепо копирую рабочие процессы из GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins · GitHub и GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes · GitHub. (Для моего плагина дашборда, который зависит от плагина Stripe, мне приходится немного корректировать плагин-шаблон). Я считаю, что этого достаточно для линтинга.
Однако я хочу, чтобы VSCode выполнял линтинг до того, как я сделаю коммит. Раньше у меня это работало, но теперь перестало. Мне кажется, что кто-то, кто разбирается в VSCode так же хорошо, как я разбирался в Emacs 20 лет назад, мог бы сказать что-то вроде: «Нажми Control-P, сделай то-то для установки инструмента форматирования, отредактируй файл конфигурации, чтобы он делал нужное», и тогда я снова мог бы нажимать Control-S, и мой Handlebars, JavaScript и всё остальное красиво форматировались, а также находились все назойливые переменные, которые я определил, но не использовал, и так далее.
Приближаемся
Хорошо, но я сделал следующее:
npm install --global yarn
yarn add prettier
И теперь у меня есть discourse-prettier:
#!/usr/bin/env bash
if [ -n "$(find assets -type f \( -name "*.scss" -or -name "*.js" -or -name "*.es6" -or -name "*.hbs" \) 2>/dev/null)" ]; then
yarn prettier --write "assets/**/*.{scss,js,es6,hbs}"
fi
if [ -n "$(find admin/assets -type f \( -name "*.scss" -or -name "*.js" -or -name "*.es6" -or -name "*.hbs" \) 2>/dev/null)" ]; then
yarn prettier --write "admin/assets/**/*.{scss,js,es6,hbs}"
fi
if [ 0 -lt $(find test -type f \( -name "*.js" -or -name "*.es6" \) 2> /dev/null | wc -l) ]; then
yarn prettier --write "test/**/*.{js,es6}"
fi
if [ -n "$(find assets -type f \( -name "*.scss" -or -name "*.js" -or -name "*.es6" -or -name "*.hbs" \) 2>/dev/null)" ]; then
yarn prettier --list-different "assets/**/*.{scss,js,es6,hbs}"
fi
if [ -n "$(find admin/assets -type f \( -name "*.scss" -or -name "*.js" -or -name "*.es6" -or -name "*.hbs" \) 2>/dev/null)" ]; then
yarn prettier --list-different "admin/assets/**/*.{scss,js,es6,hbs}"
fi
if [ 0 -lt $(find test -type f \( -name "*.js" -or -name "*.es6" \) 2> /dev/null | wc -l) ]; then
yarn prettier --list-different "test/**/*.{js,es6}"
fi
Это решило часть моей проблемы, так что хотя бы теперь я могу запускать prettier из командной строки. Но я всё ещё готов заплатить за помощь, чтобы VSCode выполнял мою грязную работу. При сохранении он должен запускать eslint (или rubocop, или что-то ещё) и либо исправлять ошибки, либо сообщать, что не может. Я слишком стар, чтобы думать, что мой редактор должен писать мой код, но не настолько стар, чтобы считать, что он не должен его форматировать.
Раньше была тема, где кто-то предлагал, какие плагины VSCode он использует, что мне немного помогло, но сейчас я её не вижу.