O que eu faço é copiar cegamente os fluxos de trabalho de GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins e GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes. (Eu tenho que ajustar um pouco o do plugin para o meu plugin de dashboard, que depende do plugin stripe). Acredito que isso seja bom o suficiente para fazer o linting.
O que eu quero, no entanto, é que o vscode faça o linting antes de eu fazer o commit. Já funcionou no passado, mas parou e me sinto como alguém que sabia sobre Emacs 20 anos atrás, que poderia dizer algo como “digite control-p, agora faça a coisa para instalar a coisa de formatação, agora edite o arquivo de configuração para que ele faça a Coisa Certa” e então eu poderia, mais uma vez, digitar control-S e ter meus handlebars, javascript e qualquer outra coisa formatados de forma bonita, e também encontrar todas as variáveis incômodas que defini, mas nunca usei e assim por diante.
Chegando mais perto
OK, mas eu fiz isso:
npm install --global yarn
yarn add prettier
E agora eu tenho 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
Isso resolveu parte do meu problema, então pelo menos consigo executar prettier pela linha de comando. Mas ainda estou disposto a pagar por ajuda para fazer o vscode fazer meu trabalho sujo. Quando eu salvar, ele deve executar eslint (ou rubop ou o que for) e corrigi-lo ou me dizer que não pode. Sou velho demais para pensar que meu editor deveria escrever meu código, mas não tão velho a ponto de pensar que ele não deveria formatá-lo.
Costumava haver um tópico onde alguém sugeria quais plugins do vscode estava usando, o que me ajudou um pouco, mas não o vejo agora.