NIAEFEUP / nijobs-fe

[FRONTEND] A platform for companies to advertise their job opportunities to students
GNU General Public License v3.0
23 stars 3 forks source link

Configurar Linting e Git hooks #3

Closed imnotteixeira closed 5 years ago

imnotteixeira commented 5 years ago

Correr o lint no pre commit

DuarteOliveira8 commented 5 years ago

Para o lint escolhi usar ESLint e estive à procura de algumas opções de lint específicas para React. Encontrei o eslint-plugin-react que é recomendado pelo ESLint.

Entre as várias opções escolhi algumas que achei necessárias e úteis para manter o nosso código organizado e evitar erros o máximo possível. Isto também vai ajudar pessoal que está a começar a aprender ReactJS, pois evita muitos erros de transição de HTML para JSX.

As opções escolhidas do ESLint foram as seguintes:

As opções escolhidas especificamente para React foram as seguintes:

imnotteixeira commented 5 years ago

Até agora, parecem-me bem as rules

Para correr o lint no pre-commit recomendo o husky (https://github.com/typicode/husky), é o que estamos a usar na API-SIGARRA e é muito fácil de configurar

DuarteOliveira8 commented 5 years ago

Sim, o António já esteve a ver essa opção! Vamos usar o husky então.

miguelpduarte commented 5 years ago

As rules parecem-me bem. A única que me faz mais comichão seria a do camel case, eu pessoalmente prefiro usar camelCase para funções, PascalCase para classes, e snake_case para variáveis, há forma de pôr isso no eslint? Não havendo, usar camelCase para tudo parece-me uma outra boa opção, mas também podemos debater os coding standards numa reunião ou assim

miguelpduarte commented 5 years ago

Also quero realçar que aprovo bastante o uso de 1tbs hehe

imnotteixeira commented 5 years ago

This might help

https://www.npmjs.com/package/eslint-plugin-more-naming-conventions?activeTab=readme

DuarteOliveira8 commented 5 years ago

Pelo que percebi dos exemplos, @imnotteixeira, esse plugin faz com que as funções fiquem em PascalCase e não em camelCase. Mas para variáveis em snake_case é uma boa opção!

Também me apercebi que a opção de camelcase do eslint é só para variáveis. Vou ter de ver melhor opções para naming.

Quanto a classes ficarem em PascalCase, já adicionei isso para os componentes de ReactJS. Acho que não haverá mais classes para além dos componentes, por isso não acho que seja preciso uma opção adicional no eslint, mas posso estar errado.

imnotteixeira commented 5 years ago

pelo que vi do eslint, o camelcase é para vars e funções, o que seria um problema porque ativando os 2 pode dar conflito, mas nada como testar. Seria camelcase para aplicar a vars e funçoes camelcase, e depois o outro do snake case so para vars

miguelpduarte commented 5 years ago

@DuarteOliveira8 Acho que poderiam haver outras "classes" que não seriam components, usadas possivelmente para data processing ou assim. Mas entretanto já pensei nisso e falei também com o @imnotteixeira e ambos concordamos que isso seriam ficheiros de utils standalone que exportariam funções diretamente então seria tranquilo (mesma ideia que ter classes com funções static, mas assim facilitaria importar e afins, imo - se são funcionalmente equivalentes não há razão para complicar com uma classe)

imnotteixeira commented 5 years ago

Done in #6