Ajuda na configuração de rubocop, eslint, etc. no VS Code e na linha de comando.

Estou farto de enviar código que falha nos testes de linting. Às vezes, consigo copiar e colar os comandos rubocop ou yarn eslint (e assim por diante) do GitHub no meu terminal e isso funciona, mas também não está a funcionar agora.

Estou a receber erros como

 Não foi possível inferir um analisador para o ficheiro: ...

Para alguns ficheiros em algumas condições, o VS Code reformata corretamente ao guardar e diz-me que tenho um erro de sintaxe, mas isso não está a funcionar agora.

O que gostaria que fosse feito?

Quero fazer um partilha de ecrã (Zoom ou o que for) e que me guie através das coisas para que

  • o VS Code execute tudo o que deveria executar ao guardar e corrija a formatação ou diga-me que algo está quebrado.
  • eu possa executar yarn eslint e qualquer outra coisa que esteja nos testes de linting a partir da linha de comandos.

Quando precisa que seja feito?

Antes que eu enlouqueça completamente.

Qual é o seu orçamento, em USD, que pode oferecer para esta tarefa?

Estou a usar o Pop!Os, que é essencialmente Ubuntu.

Se tiver a certeza de que consegue resolver este problema, estou preparado para pagar uma hora do seu tempo à sua taxa normal. Se conseguir fazer em dez minutos, fico feliz em pagar por uma hora. Todos ganham.

2 curtidas

Jay,

frustrante, né?

O que eu faço para esse tipo de coisa é:

  • examinar os fluxos de trabalho de CI para um plugin popular
  • olhar a configuração associada na raiz do plugin

Você pode ver o que meus testes de linting para Chatbot fazem aqui:

Acredito que você possa executar eslint e prettier do diretório do plugin, mas o rubocop pode ser executado do diretório do discourse.

Se isso resolver seu problema, sinta-se à vontade para converter isso em um Tópico Dev e seja bem-vindo :slight_smile:

1 curtida

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.

1 curtida

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