Continuando a série sobre testes, vamos adicionar duas ferramentas ao projeto que ajudam a melhorar a qualidade do código.
Você pode baixar o repositório e fazer o checkout na branch exercise-05
para continuar de onde paramos.
Prettier
A primeira ferramenta é o Prettier, com ele não precisamos nos preocupar com indentação de código, se as aspas devem ser simples ou duplas, etc. Ele formata o código automaticamente mantendo sempre o mesmo padrão.
Para instalar o Prettier execute o comando:
$ npm i -D prettier
Com o Prettier instalado, precisamos criar o arquivo .prettierrc
e adicionar as opções desejadas. Você também pode usar o playground para ajudar na configuração.
Nesse caso vou criar o arquivo .prettierrc
na raiz do projeto e adicionar apenas um objeto vazio, para usar as configurações padrão:
{}
Adicione o script no package.json
:
"format": "prettier --write \"src/**/*.{js,jsx}\""
Se você executar esse script o Prettier vai formatar todos os arquivos .js
ou .jsx
dentro de src
.
Extensão para o Visual Studio Code
Para quem usa o Visual Studio Code, é possível instalar uma extensão que facilita ainda mais o uso do Prettier.
Adicione as linhas seguintes no arquivo settings.json
do Visual Studio Code, para que os arquivos sejam formatados sempre que forem salvos:
{
"editor.formatOnSave": true,
"prettier.requireConfig": true
}
Com a extensão instalada, é necessário instalar o Prettier no projeto?
Você pode instalar a extensão e não instalar no projeto, mas se você estiver trabalhando em um projeto a longo prazo que outras pessoas também vão trabalhar nele, é importante instalar o Prettier no projeto, para que todos possam se beneficiar dele, mesmo se não estiverem usando o Visual Studio Code.
ESLint
O ESLint é uma ferramenta incrível de análise de código que ajuda a previnir vários erros.
Para instalar execute o seguinte comando:
$ npm i -D eslint eslint-config-prettier
O ESLint verifica algumas regras de formatação que o Prettier também verifica, para que não tenham conflitos, podemos desabilitar essas regras no ESLint e deixar apenas como responsabilidade do Prettier.
Ao invés de sair desabilitando essas regras uma por uma, instalamos o eslint-config-prettier
no projeto para desabilitar todas de uma vez.
Crie o arquivo .eslintrc.json
na raiz do projeto e adicione:
{
"extends": ["eslint:recommended", "prettier"]
}
Podemos adicionar várias configurações pré-definidas nesse Array. A ordem é importante porque as últimas sempre vão sobrescrever as primeiras. Nesse caso o Prettier deve ficar por ultimo porque ele não adiciona nenhuma regra, ele apenas desabilita as regras que são responsabilidade dele.
Para usar a ECMAScript mais recente e features como módulos e JSX, precisamos adicionar mais algumas configurações:
{
"extends": ["eslint:recommended", "prettier"],
"parserOptions": {
"ecmaVersion": 2021,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"env": {
"es6": true,
"browser": true,
"jest": true,
"node": true
}
}
Adicione o seguinte comando no package.json
:
"lint": "eslint \"src/**/*.{js,jsx}\" --quiet"
O --quiet
faz o ESLint retornar apenas erros, caso tenha algum warning, ele será ignorado.
Extensão para o Visual Studio Code
O ESLint também conta com uma extensão pra o Visual Studio Code, para melhorar ainda mais a experiencia do desenvolvedor.
Para que os problemas relatados pelo ESLint sejam corrigidos automaticamente após o arquivo ser salvo, adicione o seguinte no arquivo settings.json
do Visual Studio Code:
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
ESLint e React
Quando adicionamos suporte ao JSX, não quer dizer que adicionamos suporte ao React, existem alguns detalhes que o React adiciona no JSX que não são reconhecidos pelo ESLint.
Para que tudo funcione, execute o seguinte comando:
$ npm install -D eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react
Após a intalação, adicione mais algumas configurações no .eslintrc.json
, para que ele fique assim:
{
"extends": [
"eslint:recommended",
"plugin:import/errors",
"plugin:react/recommended",
"plugin:jsx-a11y/recommended",
"prettier"
],
"rules": {
"react/prop-types": "off",
"react/jsx-uses-react": "off",
"react/react-in-jsx-scope": "off",
"react/self-closing-comp": "warn"
},
"plugins": ["react", "import", "jsx-a11y"],
"parserOptions": {
"ecmaVersion": 2021,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"env": {
"es6": true,
"browser": true,
"jest": true,
"node": true
},
"settings": {
"react": {
"version": "detect"
}
}
}
ESLint e Hooks
Quando usamos Hooks devemos seguir algumas regras, podemos usar o eslint-plugin-react-hooks
para nos ajudar com isso.
Para instalar o plugin, execute:
$ npm install -D eslint-plugin-react-hooks
Em seguida adicione ele no .eslintrc.json
:
"plugin:jsx-a11y/recommended",
+ "plugin:react-hooks/recommended",
"prettier"
Conclusão
Adicionamos duas ferramentas que ajudam a melhorar bastante a qualidade do código. O ESLint faz uma análise estática do código, ajudando a eliminar vários bugs e o Prettier garante que o código seja formatado corretamente.
Quando comecei a usar essas duas ferramentas juntas, sempre ficava com dúvidas durante a instalação, por isso fiz questão de escrever esse artigo e tentei deixar o mais claro possível.
Se esse conteúdo te ajudou ou se ficou alguma dúvida, deixa um comentário. E como de costume o código completo pode ser encontrado nesse repositório. Abraço!