Criando seu próprio pacote de configuração ESLint

Criando seu próprio pacote de configuração ESLint

17 de June, 2020 0 By António César de Andrade
Click to rate this post!
[Total: 0 Average: 0]


O ESLint é uma ferramenta poderosa para impor convenções de codificação consistentes e garantir a qualidade na sua base de código JavaScript. Às vezes, as convenções de codificação são difíceis de decidir e ter uma ferramenta para automatizar a imposição é ótimo para evitar discussões desnecessárias. Garantir a qualidade também é um recurso acolhedor: os linters são excelentes ferramentas para detectar bugs, como os relacionados ao escopo variável.

O ESLint foi projetado para ser completamente configurável, oferecendo a opção de ativar / desativar cada regra ou misturar as regras para atender às suas necessidades. Com isso em mente, a comunidade JavaScript e as empresas que usam JavaScript podem estender a configuração original do ESLint. tem vários exemplos no registro npm: eslint-config-airbnb é um dos mais famosos.

Em sua base diária, você provavelmente combinará mais de uma configuração, pois não existe uma configuração única. Esta postagem mostrará como criar seu repositório de configurações, oferecendo a opção de centralizar todas as suas definições de regra.

O primeiro passo é criar uma nova pasta e criar um projeto npm. Por convenção, o nome do módulo começa com eslint-config-, tal como eslint-config-test.

mkdir eslint-config-test
cd eslint-config-test
npm init

Você terá um arquivo package.json que se parecerá com o seguinte trecho:

{
  "name": "eslint-config-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Em seguida, hora de adicionar suas dependências ESLint:

npm install -D eslint eslint-config-airbnb eslint-config-prettier eslint-plugin-import eslint-plugin-jsx eslint-plugin-prettier eslint-plugin-react eslint-plugin-react-hooks prettier

Os pacotes serão alterados de acordo com suas necessidades. Nesse caso, trabalho com bases de código React e uso Mais bonito para formatar meu código. o documentação menciona que, se sua configuração compartilhável depende de um plug-in, você também deve especificá-lo como um peerDependency.

Em seguida, vou criar um .eslintrc.js com a minha configuração – é semelhante ao que você já faz em seus aplicativos:

module.exports = {
  extends: [
    'airbnb',
    'eslint:recommended',
    'plugin:import/errors',
    'plugin:react/recommended',
    'plugin:jsx-a11y/recommended',
    'plugin:prettier/recommended',
    'prettier/react',
  ],
  plugins: [
    'react-hooks',
  ],
  rules: {
  },
};

o rules O objeto armazena qualquer regra que você deseja substituir. No trecho acima rules está vazio, mas fique à vontade para verificar minhas substituições. No repositório airbnb / javascript, você pode encontre uma lista de regras substituídas pela comunidade.

Hora de criar um .prettierrc com suas regras personalizadas – essa é uma parte complicada, pois Prettier e ESLint podem entrar em conflito com algumas regras:

{
  "tabWidth": 2
}

É importante mencionar que o .prettierrc O arquivo deve estar na raiz do projeto que está usando seu pacote. No momento, estou copiando manualmente. O próximo passo é exportar sua configuração no diretório index.js Arquivo:

const eslintrc = require('./.eslintrc.js');

module.exports = eslintrc;

É tecnicamente possível criar toda a configuração no index.js no entanto, você não obteria o objeto de configuração (insira seu Começo piada aqui).

Voilà! É tudo o que você precisa para iniciar seu próprio pacote de configurações. Você pode testar localmente seu pacote de configuração executando, em um projeto JavaScript:

npm install /Users/leonardo/path/to/eslint-config-test

Lembre-se de que as dependências do seu pacote de configuração também podem ser instaladas.

Se tudo estiver bem, você pode publicar no registro npm:

npm publish

Exemplo completo

Eu tenho um projeto funcional do GitHub mostrando a configuração deste post: eslint-config-leozera. Você também pode vê-lo abaixo:

Mais sobre isso


Também publicado em meu blog. Se você gosta deste conteúdo, siga-me no Twitter e GitHub. Foto da capa por Susan Holt Simpson / Unsplash





Fonte