Lo que hago es copiar ciegamente los flujos de trabajo de GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins y GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes. (Tengo que retocar un poco el del plugin para mi plugin de panel, que depende del plugin de stripe). Esto, estoy dispuesto a creer, es suficiente para hacer el linting.
Lo que quiero, sin embargo, es que vscode haga el linting antes de hacer el commit. Lo he tenido funcionando en el pasado, pero ha dejado de funcionar y me siento como alguien que, sabiendo de VScode, conocía Emacs hace 20 años, podría decir algo como “presiona control-p, ahora haz lo que sea para instalar la cosa de formato, ahora edita el archivo de configuración para que haga lo Correcto” y entonces podría, una vez más, presionar control-S y que mis handlebars, javascript y lo que sea que se formatee bonito, y también encontrar todas las molestas variables que definí pero nunca usé y cosas así.
Acercándome
OK, pero hice esto:
npm install --global yarn
yarn add prettier
Y ahora tengo 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
Eso resolvió parte de mi problema, así que al menos puedo ejecutar prettier desde la línea de comandos. Pero todavía estoy dispuesto a pagar por ayuda para que vscode haga mi trabajo sucio. Cuando guardo, debería ejecutar eslint (o rubop o lo que sea) y arreglarlo o decirme que no puede. Soy demasiado viejo para pensar que mi editor debería escribir mi código, pero no tan viejo como para pensar que no debería formatearlo.
Solía haber un tema donde alguien sugería qué plugins de vscode estaba usando, lo que me ayudó un poco, pero ahora no lo veo.