Ayuda configurando rubocop, eslint, etc. en VS Code y la línea de comandos

Estoy harto de enviar código que falla las pruebas de linting. A veces, puedo copiar y pegar los comandos de rubocop o yarn eslint (y otros) de GitHub en mi terminal y eso funciona, pero tampoco está funcionando ahora.

Estoy recibiendo errores como

 No se pudo inferir un analizador para el archivo: ...

Para algunos archivos en algunas condiciones, vscode se reformatea correctamente al guardar y me dice que tengo un error de sintaxis, pero eso no está funcionando ahora.

¿Qué te gustaría que se hiciera?

Quiero hacer una pantalla compartida por Zoom (o lo que sea) y que me guíes a través de las cosas para que

  • vscode ejecute todo lo que debe ejecutar al guardar y corrija el formato o me diga que algo está roto.
  • Pueda ejecutar yarn eslint y cualquier otra cosa que esté en las pruebas de linting desde la línea de comandos.

¿Cuándo lo necesitas hecho?

Antes de que me vuelva loco.

¿Cuál es tu presupuesto, en $ USD que puedes ofrecer para esta tarea?

Estoy usando Pop!Os, que es esencialmente Ubuntu.

Si estás bastante seguro de que puedes resolver este problema, estoy preparado para pagar una hora de tu tiempo a tu tarifa estándar. Si puedes hacerlo en diez minutos, estaré feliz de pagar por una hora. Todos ganan.

2 Me gusta

Jay,

frustrante, ¿verdad?

Lo que hago para este tipo de cosas es:

  • examinar los flujos de trabajo de CI para un plugin popular
  • mirar la configuración asociada en la raíz del plugin

Puedes ver lo que hacen mis pruebas de linting para Chatbot aquí:

Creo que puedes ejecutar eslint y prettier desde el directorio del plugin, pero rubocop se puede ejecutar desde el directorio de discourse.

Si esto resuelve tu problema, no dudes en convertirlo en un tema Dev y eres bienvenido :slight_smile:

1 me gusta

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.

1 me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.