JSPM

eslint-config-flowih-standard

1.0.3
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 5
    • Score
      100M100P100Q21833F
    • License MIT

    Configuração ESLint padrão para projetos Node.js (NestJS) e React (Next.js) da Flowih, focando em Clean Architecture e SOLID.

    Package Exports

    • eslint-config-flowih-standard
    • eslint-config-flowih-standard/index.js

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (eslint-config-flowih-standard) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    eslint-config-flowih-standard

    NPM Version ESLint Version TypeScript Version Prettier Version Node.js Support

    🚀 Visão Geral

    Este pacote contém a configuração padrão de ESLint e Prettier para todos os projetos de Frontend (com Next.js) e Backend (com NestJS) da Flowih. Nosso objetivo é garantir a consistência do código, alta qualidade, legibilidade e conformidade com os princípios de Clean Architecture e SOLID em todo o nosso ecossistema de desenvolvimento.

    Ao utilizar esta configuração, você automaticamente segue as melhores práticas da Flowih, facilitando a colaboração, a revisão de código e a manutenção dos nossos sistemas.

    ✨ Por que usar?

    • Consistência: Código com o mesmo estilo e formatação em todos os projetos, independentemente do desenvolvedor.
    • Qualidade: Ajuda a prevenir bugs comuns e antipadrões de código.
    • Manutenibilidade: Códigos mais limpos e legíveis são mais fáceis de entender e manter.
    • Padronização: Agiliza a integração de novos membros ao time e facilita a navegação entre diferentes projetos.
    • Foco Arquitetural: Regras pensadas para reforçar os princípios de Clean Architecture e SOLID.

    📦 Instalação

    Para usar esta configuração em seu projeto (seja ele Next.js ou NestJS), siga os passos abaixo:

    1. Instale o Pacote de Configuração

    Na raiz do seu projeto, execute o comando (use npm ou yarn):

    npm install --save-dev eslint-config-flowih-standard
    # ou
    yarn add --dev eslint-config-flowih-standard

    2. Instale as Dependências (peerDependencies)

    Este pacote depende de outras ferramentas de linting e formatação para funcionar corretamente. Instale-as no seu projeto:

    npm install --save-dev eslint prettier @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint-config-prettier eslint-plugin-prettier eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y
    # ou
    yarn add --dev eslint prettier @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint-config-prettier eslint-plugin-prettier eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y

    3. Crie ou Edite o Arquivo .eslintrc.json

    Na raiz do seu projeto, crie (se não existir) ou edite o arquivo .eslintrc.json para estender a configuração da Flowih:

    {
      "extends": ["flowih-standard"],
      "parserOptions": {
        "project": "./tsconfig.json"
      },
      "overrides": [
        {
          "files": [
            "src/pages/**/*.tsx",
            "src/pages/**/*.ts",
            "src/app/**/*.tsx",
            "src/app/**/*.ts"
          ],
          "extends": ["plugin:@next/next/recommended"],
          "rules": {}
        },
        {
          "files": ["*.spec.ts", "*.test.ts", "*.test.tsx"],
          "env": {
            "jest": true,
            "node": true
          },
          "rules": {
            "no-console": "off",
            "@typescript-eslint/no-empty-function": "off"
          }
        }
      ],
      "rules": {
        // Exemplo:
        // "no-console": "error"
      }
    }

    4. Configure o .prettierrc.json (Opcional, mas Recomendado)

    Crie um arquivo .prettierrc.json na raiz do seu projeto com o seguinte conteúdo:

    {
      "singleQuote": true,
      "semi": false,
      "trailingComma": "all",
      "printWidth": 100,
      "tabWidth": 2,
      "arrowParens": "always",
      "endOfLine": "lf"
    }

    5. Adicione Scripts ao package.json do Projeto

    Inclua os seguintes scripts no seu package.json:

    "scripts": {
      "lint": "eslint "{src,apps,libs,test}/**/*.{ts,tsx}"",
      "lint:fix": "eslint "{src,apps,libs,test}/**/*.{ts,tsx}" --fix",
      "format": "prettier --write "{src,apps,libs,test}/**/*.{ts,tsx}""
    }

    6. Configure o VS Code (e Outras IDEs)

    Para uma melhor experiência de desenvolvimento, configure seu VS Code para formatar e corrigir erros automaticamente ao salvar:

    Instale as Extensões:

    • ESLint (Publisher: Dirk Baeumer)
    • Prettier - Code formatter (Publisher: Prettier)

    Atualize seu settings.json:

    Abra as configurações do VS Code (Ctrl+,), clique no ícone {} no canto superior direito e adicione:

    {
      "editor.formatOnSave": true,
      "editor.defaultFormatter": "esbenp.prettier-vscode",
      "editor.codeActionsOnSave": {
        "source.fixAll.eslint": "explicit"
      },
      "[typescriptreact]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
      },
      "[typescript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
      }
    }

    🧐 Entendendo as Regras do Linter (com Emojis)

    🎨 Regras de Formatação (Prettier)

    Regra O que faz? Por quê?
    prettier/prettier Garante que o código siga um estilo consistente de formatação (aspas, tabs, etc.) Evita discussões sobre estilo, melhora legibilidade e facilita revisões em equipe.

    🧹 Qualidade e Prevenção de Bugs (ESLint)

    Regra O que faz? Por quê?
    no-unused-vars 🗑️ Impede variáveis, funções ou imports que nunca são utilizados. Mantém o código limpo, reduz ruído e evita distrações com código morto.
    no-console 🤫 Bloqueia o uso de console.log, console.warn, etc. Evita vazamentos de informações e poluição do console em produção.
    eqeqeq ⚖️ Exige o uso de === e !== ao invés de == e !=. Previne bugs causados por coerção implícita de tipos, como 0 == false → true.

    🔷 TypeScript (@typescript-eslint)

    Regra O que faz? Por quê?
    @typescript-eslint/no-explicit-any 🚫 Proíbe o uso do tipo any. Evita a perda de segurança da tipagem, força a definição de tipos mais claros e precisos.
    @typescript-eslint/explicit-function-return-type 🎯 Exige que funções declarem seu tipo de retorno explicitamente. Melhora a documentação automática e facilita entender o que a função entrega.
    @typescript-eslint/no-floating-promises 📨 Obriga que Promises sejam tratadas com await, .then(), ou .catch(). Garante que erros em Promises não passem despercebidos, evitando falhas silenciosas.

    🔄 Imports (eslint-plugin-import)

    Regra O que faz? Por quê?
    import/order 🚦 Impõe uma ordem específica para os imports (e.g. bibliotecas externas primeiro). Facilita a leitura e manutenção, evita agrupamentos caóticos de imports.
    import/no-cycle 🔁 Impede que módulos tenham dependências circulares entre si. Evita acoplamento excessivo e bugs difíceis de rastrear por loops de dependência.

    ⚛️ React e Hooks

    Regra O que faz? Por quê?
    react-hooks/rules-of-hooks Garante que hooks (useState, useEffect, etc.) sejam usados apenas no topo de componentes ou custom hooks. Quebrar essa regra causa comportamento imprevisível — é fundamental para o React funcionar corretamente.
    react-hooks/exhaustive-deps ⛓️ Verifica se todas as dependências estão listadas em useEffect, useCallback, etc. Garante que o hook reaja corretamente às mudanças de estado/props. Evita bugs silenciosos.
    react/jsx-key 🔑 Obriga a definir a prop key em elementos renderizados dentro de listas. Melhora a performance do React e evita re-renderizações desnecessárias ou erradas.

    ♿ Acessibilidade (eslint-plugin-jsx-a11y)

    Regra O que faz? Por quê?
    jsx-a11y/alt-text 🖼️ Exige que imagens tenham o atributo alt. Ajuda leitores de tela a descrever imagens para usuários com deficiência visual.
    jsx-a11y/click-events-have-key-events ⌨️ Garante que elementos clicáveis também sejam navegáveis pelo teclado (com Enter, Space, etc.). Promove acessibilidade para usuários que não usam mouse.

    🤝 Colaboração e Contribuição

    Este pacote é um esforço coletivo para manter a qualidade do código da Flowih. Se você tiver sugestões para novas regras, melhorias ou encontrar algum problema, por favor, abra uma issue ou envie um Pull Request no repositório do pacote.