{"_id":"@digdigital/eslint-config-frontend","_rev":"2-d09cad109f349ccf303cd65a6f62b1e8","name":"@digdigital/eslint-config-frontend","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.1":{"name":"@digdigital/eslint-config-frontend","version":"1.0.1","author":{"name":"Vanderson Soares","email":"vanderson.soares@digitedigital.com"},"license":"ISC","_id":"@digdigital/eslint-config-frontend@1.0.1","maintainers":[{"name":"vanderson.stefanio","email":"vanderson.stefanio@hotmail.com"}],"homepage":"https://github.com/digdigital/eslint-config-frontend#readme","bugs":{"url":"https://github.com/digdigital/eslint-config-frontend/issues"},"dist":{"shasum":"af137112f7c6f414a6bba022df976771f6bfa715","tarball":"https://registry.npmjs.org/@digdigital/eslint-config-frontend/-/eslint-config-frontend-1.0.1.tgz","fileCount":6,"integrity":"sha512-zfEOcl8li6SAgIHXT5goHf4dcLbC+rEDmNsqsx0VqCvqCplbMB7oDuVjDLgFvdTjLH4ZyV8p6tAaZKXoWyXCNw==","signatures":[{"sig":"MEYCIQCxzU87FYh26VZ5rDy1vk8RMpOaoZilIW96a4nSxm/0OAIhALI8T2Xn/QnoJNFlGoMcPe6j7dgPwsUVPVp8iOqX9Gg1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14816},"main":"index.js","gitHead":"bbf1d2aae19ef997d57ccfcf936a347b9e2282aa","scripts":{"lint":"eslint --color --no-eslintrc --no-inline-config --ignore-path ./.eslintignore -c ./.eslintrc.json --ext .js,.jsx,.ts,.tsx","test":"echo \"We should add some tests here!\" && exit 0","build":"echo \"Do nothing, we just want our .eslintrc.json file published ;)\""},"_npmUser":{"name":"vanderson.stefanio","email":"vanderson.stefanio@hotmail.com"},"repository":{"url":"git+ssh://git@github.com/digdigital/eslint-config-frontend.git","type":"git"},"_npmVersion":"10.8.2","description":"Pacote com as regras de eslint que deverão ser utilizadas nos projetos frontend","directories":{},"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"eslint":"8.53.0","prettier":"3.0.3","typescript":"5.2.2","eslint-plugin-react":"7.30.0","eslint-config-airbnb":"19.0.4","eslint-plugin-import":"2.26.0","eslint-config-prettier":"9.0.0","eslint-plugin-jest-dom":"5.1.0","eslint-plugin-jsx-a11y":"6.8.0","eslint-plugin-prettier":"5.0.1","@typescript-eslint/parser":"6.10.0","eslint-plugin-react-hooks":"4.6.0","eslint-plugin-import-helpers":"1.3.1","eslint-plugin-testing-library":"6.1.0","@digdigital/eslint-plugin-rules":"^1.0.3","@typescript-eslint/eslint-plugin":"6.10.0","eslint-import-resolver-typescript":"3.6.1"},"peerDependencies":{"eslint":"8.53.0","prettier":"3.0.3","typescript":"5.2.2","eslint-plugin-react":"7.30.0","eslint-config-airbnb":"19.0.4","eslint-plugin-import":"2.26.0","eslint-config-prettier":"9.0.0","eslint-plugin-jest-dom":"5.1.0","eslint-plugin-jsx-a11y":"6.8.0","eslint-plugin-prettier":"5.0.1","@typescript-eslint/parser":"6.10.0","eslint-plugin-react-hooks":"4.6.0","eslint-plugin-import-helpers":"1.3.1","eslint-plugin-testing-library":"6.1.0","@digdigital/eslint-plugin-rules":"^1.0.3","@typescript-eslint/eslint-plugin":"6.10.0","eslint-import-resolver-typescript":"3.6.1"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config-frontend_1.0.1_1785872793719_0.3927021342592072","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@digdigital/eslint-config-frontend","version":"1.0.3","description":"Pacote com as regras de eslint que deverão ser utilizadas nos projetos frontend","main":"index.js","scripts":{"test":"echo \"We should add some tests here!\" && exit 0","build":"echo \"Do nothing, we just want our .eslintrc.json file published ;)\"","lint":"eslint --color --no-eslintrc --no-inline-config --ignore-path ./.eslintignore -c ./.eslintrc.json --ext .js,.jsx,.ts,.tsx"},"repository":{"type":"git","url":"git@github.com:digdigital/eslint-config-frontend.git"},"author":{"name":"Vanderson Soares","email":"vanderson.soares@digitedigital.com"},"license":"ISC","devDependencies":{"@digdigital/eslint-plugin-rules":"^1.0.3","@typescript-eslint/eslint-plugin":"6.10.0","@typescript-eslint/parser":"6.10.0","eslint":"8.53.0","eslint-config-airbnb":"19.0.4","eslint-config-prettier":"9.0.0","eslint-import-resolver-typescript":"3.6.1","eslint-plugin-import":"2.26.0","eslint-plugin-import-helpers":"1.3.1","eslint-plugin-jest-dom":"5.1.0","eslint-plugin-jsx-a11y":"6.8.0","eslint-plugin-prettier":"5.0.1","eslint-plugin-react":"7.30.0","eslint-plugin-react-hooks":"4.6.0","eslint-plugin-testing-library":"6.1.0","prettier":"3.0.3","typescript":"5.2.2"},"peerDependencies":{"@digdigital/eslint-plugin-rules":"^1.0.3","@typescript-eslint/eslint-plugin":"6.10.0","@typescript-eslint/parser":"6.10.0","eslint":"8.53.0","eslint-config-airbnb":"19.0.4","eslint-config-prettier":"9.0.0","eslint-import-resolver-typescript":"3.6.1","eslint-plugin-import":"2.26.0","eslint-plugin-import-helpers":"1.3.1","eslint-plugin-jest-dom":"5.1.0","eslint-plugin-jsx-a11y":"6.8.0","eslint-plugin-prettier":"5.0.1","eslint-plugin-react":"7.30.0","eslint-plugin-react-hooks":"4.6.0","eslint-plugin-testing-library":"6.1.0","prettier":"3.0.3","typescript":"5.2.2"},"_id":"@digdigital/eslint-config-frontend@1.0.3","dist":{"shasum":"472f82e32db61688e90f7f855916112db6ebfbaf","integrity":"sha512-x8vMLCCy65Gcu72H39u/TvOcKoxJzQlKg3YUiV1Ml8EBM9hcAvHJ5viIfahxidquDD8x+tOIPUbVUSScvut5eg==","tarball":"https://registry.npmjs.org/@digdigital/eslint-config-frontend/-/eslint-config-frontend-1.0.3.tgz","fileCount":7,"unpackedSize":14816,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD0CC/pKQVR4E4K4Ygo9Uw7a604IbXZfK9CxO5c0jseDgIgMpjWITREX+xyG4LW9rVUVZi95J/d7uqbTDGmr9cCgoY="}]},"_npmUser":{"name":"vanderson.stefanio","email":"vanderson.stefanio@hotmail.com"},"directories":{},"maintainers":[{"name":"vanderson.stefanio","email":"vanderson.stefanio@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-config-frontend_1.0.3_1785875458006_0.07305962878265815"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-04T19:46:33.379Z","modified":"2026-08-04T20:30:58.347Z","1.0.1":"2026-08-04T19:46:33.877Z","1.0.3":"2026-08-04T20:30:58.157Z"},"author":{"name":"Vanderson Soares","email":"vanderson.soares@digitedigital.com"},"license":"ISC","repository":{"type":"git","url":"git@github.com:digdigital/eslint-config-frontend.git"},"description":"Pacote com as regras de eslint que deverão ser utilizadas nos projetos frontend","maintainers":[{"name":"vanderson.stefanio","email":"vanderson.stefanio@hotmail.com"}],"readme":"# @digdigital/eslint-config-frontend\n\nConfiguração compartilhada de ESLint para aplicações frontend da Dig Digital.\n\nEste pacote reúne regras para JavaScript, TypeScript, React, acessibilidade e testes. Ele também integra o Prettier ao ESLint para que problemas de qualidade e formatação sejam identificados no mesmo fluxo de lint.\n\n## O que está incluído\n\n- ESLint 8 e TypeScript;\n- regras baseadas em Airbnb;\n- React e React Hooks;\n- `@typescript-eslint`;\n- acessibilidade com `eslint-plugin-jsx-a11y`;\n- testes com Testing Library e Jest DOM;\n- ordenação de imports;\n- formatação com Prettier;\n- regras específicas da Dig Digital, incluindo a proteção contra exposição de variáveis de ambiente no frontend.\n\nAs regras são aplicadas a arquivos `.js`, `.jsx`, `.ts` e `.tsx`. A configuração usa o formato tradicional do ESLint (`.eslintrc`) e, portanto, não deve ser combinada com uma configuração flat (`eslint.config.js`) sem uma adaptação específica.\n\n## Requisitos\n\nO projeto consumidor precisa ter Node.js, um gerenciador de pacotes e ESLint instalado. As versões exatas das dependências necessárias são declaradas como `peerDependencies` deste pacote e devem ser instaladas no próprio projeto.\n\n## Instalação\n\nAdicione o pacote como dependência de desenvolvimento:\n\n```bash\nyarn add --dev @digdigital/eslint-config-frontend\n```\n\nCom npm:\n\n```bash\nnpm install --save-dev @digdigital/eslint-config-frontend\n```\n\nEm seguida, instale as dependências peer recomendadas pelo pacote. O script abaixo imprime os nomes e as versões compatíveis:\n\n```bash\nnode node_modules/@digdigital/eslint-config-frontend/install-peer-dependencies.js | xargs yarn add --dev\n```\n\nSe o projeto usa npm, substitua o gerenciador no final do comando:\n\n```bash\nnode node_modules/@digdigital/eslint-config-frontend/install-peer-dependencies.js | xargs npm install --save-dev\n```\n\nCaso alguma dessas dependências já exista no projeto, confira se a versão instalada atende à versão exigida. Depois da instalação, valide o resultado com `yarn lint` ou `npm run lint`.\n\n## Configuração\n\nAdicione a configuração ao `package.json` do projeto:\n\n```json\n{\n  \"eslintConfig\": {\n    \"extends\": [\n      \"@digdigital/eslint-config-frontend\"\n    ]\n  }\n}\n```\n\nComo alternativa, crie um arquivo `.eslintrc.json` na raiz do projeto:\n\n```json\n{\n  \"extends\": [\"@digdigital/eslint-config-frontend\"]\n}\n```\n\nMantenha apenas uma configuração principal para evitar comportamentos difíceis de diagnosticar. Se houver configurações locais, elas serão mescladas pelo ESLint e poderão substituir as regras deste pacote.\n\n## Scripts recomendados\n\nInclua um script de lint no `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"lint\": \"eslint . --ext .js,.jsx,.ts,.tsx\"\n  }\n}\n```\n\nExecute a verificação com:\n\n```bash\nyarn lint\n# ou\nnpm run lint\n```\n\nPara verificar somente arquivos específicos:\n\n```bash\nyarn eslint src --ext .js,.jsx,.ts,.tsx\n```\n\nO arquivo `.eslintignore` publicado pelo pacote já exclui diretórios gerados, como `dist`, `build`, `coverage` e `node_modules`. Regras adicionais podem ser colocadas em um `.eslintignore` local.\n\n## Correção automática\n\nO ESLint pode corrigir automaticamente parte dos problemas encontrados:\n\n```bash\nyarn lint --fix\n# ou\nnpm run lint -- --fix\n```\n\nRevise as alterações antes de criar o commit. Nem todos os problemas podem ser corrigidos automaticamente, especialmente aqueles que exigem decisão sobre comportamento ou arquitetura.\n\n## Integração com o VS Code\n\n1. Instale a extensão [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint).\n2. Adicione `.vscode/settings.json` ao projeto:\n\n```json\n{\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": \"explicit\"\n  },\n  \"eslint.format.enable\": true,\n  \"editor.formatOnSave\": true\n}\n```\n\nNão é necessário instalar a extensão do Prettier para usar a configuração deste pacote. Se ela estiver instalada, evite habilitar dois formatadores para o mesmo tipo de arquivo.\n\n## Migração de um projeto existente\n\nAo migrar de outra configuração compartilhada, faça a transição de forma controlada:\n\n1. Remova os pacotes antigos de configuração, ESLint, plugins e Prettier que serão substituídos. Prefira `yarn remove` ou `npm uninstall` para manter o lockfile consistente.\n2. Remova configurações antigas que não serão mais usadas (`.eslintrc.*`, `.eslintignore`, `.prettierrc` e `.prettierignore`). Preserve somente regras locais que ainda sejam necessárias.\n3. Instale `@digdigital/eslint-config-frontend` e suas peer dependencies.\n4. Adicione o bloco `eslintConfig` ou o arquivo `.eslintrc.json` descrito acima.\n5. Execute `yarn lint` (ou `npm run lint`) e corrija os problemas. Use `--fix` para as correções seguras e revise manualmente o restante.\n6. Execute novamente o lint e os testes do projeto antes de enviar as alterações.\n\n## Contribuições e solicitações de mudança\n\nAntes de propor uma alteração, verifique se a regra é aplicável a todos os projetos consumidores e se não existe uma configuração local adequada para o caso específico.\n\nAo alterar a configuração:\n\n1. atualize a regra e sua justificativa;\n2. valide o próprio pacote com `yarn lint`;\n3. teste a mudança em um projeto consumidor representativo;\n4. descreva impactos, falsos positivos e eventuais passos de migração.\n\nIssues e merge requests devem ser abertas no repositório oficial do projeto: [digdigital/eslint-config-frontend](https://github.com/digdigital/eslint-config-frontend).\n\n## Publicação de uma nova versão no npm\n\nAs publicações são realizadas pelo workflow **Create release tag** do GitHub Actions. Antes de iniciar, confirme que as alterações já foram revisadas e estão na branch `master`, que o secret `NPM_TOKEN` está configurado no repositório e que o token tem permissão para publicar o pacote `@digdigital/eslint-config-frontend`.\n\nPara gerar uma nova publicação:\n\n1. Acesse a aba **Actions** do repositório no GitHub.\n2. Selecione o workflow **Create release tag**.\n3. Clique em **Run workflow**, confirme a branch `master` e escolha o tipo de incremento:\n   - `patch` para correções compatíveis, por exemplo, `1.0.0` para `1.0.1`;\n   - `minor` para novas funcionalidades compatíveis, por exemplo, `1.0.0` para `1.1.0`;\n   - `major` para alterações incompatíveis, por exemplo, `1.0.0` para `2.0.0`.\n4. Execute o workflow e aguarde a conclusão.\n\nO workflow calcula a próxima versão a partir do último tag semântico (`vMAJOR.MINOR.PATCH`), atualiza `package.json` e `package-lock.json`, executa o build, valida o conteúdo com `npm pack --dry-run`, publica com `npm publish --access public`, faz o commit da versão na `master` e cria o tag da release. Não é necessário alterar manualmente a versão nem executar `npm publish` localmente.\n\nApós a publicação, valide a versão no npm:\n\n```bash\nnpm view @digdigital/eslint-config-frontend version\nnpm view @digdigital/eslint-config-frontend@<versão> version\n```\n\n## Licença\n\nEste projeto é distribuído sob a licença ISC.\n","readmeFilename":"README.md"}