Ramos da InformáticaMundoJSPackage.json Linter: Como Validar com ESLint Plugin

Package.json Linter: Como Validar com ESLint Plugin

-

Lote Relâmpago Chega de garimpar vagas: Crie um agente com n8n + IA que caça e filtra as melhores oportunidades tech para você.
Garantir Minha Vaga ➔
Aprenda a usar o eslint-plugin-package-json para validar e padronizar seu package.json automaticamente. Evite erros de publicação NPM, inconsistências em monorepos e problemas gerados por IA no seu projeto JavaScript: Como Validar com ESLint Plugin.

Por que seu package.json merece um linter dedicado

O package.json é o documento de identidade do seu projeto JavaScript. Ele carrega metadados, scripts, dependências e configurações que afetam diretamente a publicação no NPM, a instalação de pacotes e a integração com ferramentas de CI/CD. Um arquivo mal formatado pode quebrar deploys, impedir publicações e gerar bugs difíceis de rastrear. É aí que entra o eslint-plugin-package-json: um plugin ESLint que traz validação automática, padronização e boas práticas diretamente para o coração do seu projeto.

Cenários onde este plugin resolve problemas reais

  • Monorepos com múltiplos pacotes: manter dezenas de package.json consistentes manualmente é impossível.
  • Projetos open source: campos como license, repository e author precisam estar sempre corretos.
  • Times com diferentes níveis de experiência: o plugin ensina boas práticas automaticamente, reduzindo erros.
  • Prevenção de falhas de publicação: detecta problemas antes que cheguem ao registro NPM.

IA e tokens de codificação: o problema silencioso

Ferramentas como GitHub Copilot, ChatGPT e Cursor estão cada vez mais presentes no fluxo de desenvolvimento. Elas geram código rapidamente, mas quando o assunto é package.json, costumam produzir inconsistências perigosas:
Problema gerado por IA Exemplo
Versões inválidas "react": "latest" ou "^18" (incompleto)
Campos duplicados Mesclar código gerado cria dependências repetidas
Licenças incorretas "license": "MIT License" em vez de "MIT"
Tipos errados "name": 123 (deveria ser string)
Ordenação aleatória Mistura de tabs, espaços e campos fora de ordem
O eslint-plugin-package-json funciona como uma camada de validação pós-IA, capturando esses erros automaticamente antes que causem problemas.

Instalação e configuração passo a passo

Pré-requisitos

  • Node.js 14 ou superior
  • ESLint 8+ instalado no projeto

Passo 1: Instalar dependências

npm install --save-dev eslint eslint-plugin-package-json

Passo 2: Configurar o ESLint

Crie ou atualize seu arquivo .eslintrc.json:
{
  "root": true,
  "plugins": ["package-json"],
  "overrides": [
    {
      "files": ["package.json"],
      "parser": "eslint-plugin-package-json/parser",
      "rules": {
        "package-json/valid-package-def": "error",
        "package-json/require-author": "error",
        "package-json/require-license": "error",
        "package-json/require-repository": "error",
        "package-json/sort-collections": "error",
        "package-json/valid-name": "error",
        "package-json/valid-version": "error"
      }
    }
  ]
}

Passo 3: Adicionar scripts

{
  "scripts": {
    "lint": "eslint .",
    "lint:package-json": "eslint package.json"
  }
}

Passo 4: Executar a validação

npm run lint:package-json

Regras que fazem a diferença

valid-package-def

Detecta JSON malformado e campos com tipos incorretos.
// ❌ Errado
{
  "name": 123,        // Deveria ser string
  "version": null,    // Deveria ser string
  "scripts": "build"  // Deveria ser objeto
}

sort-collections

Mantém dependências em ordem alfabética, facilitando a leitura.
// ❌ Desordenado
{
  "devDependencies": {
    "eslint": "^8.0.0",
    "vitest": "^1.0.0",
    "prettier": "^3.0.0"  // Fora de ordem
  }
}

valid-version

Rejeita versões inválidas frequentemente geradas por IA.
// ❌ Formatos problemáticos
{
  "dependencies": {
    "lodash": "latest",    // Não é versão válida
    "react": "^18",        // Semver incompleto
    "axios": "*"           // Permissivo demais
  }
}

Configuração recomendada para projetos open source

{
  "overrides": [
    {
      "files": ["package.json"],
      "parser": "eslint-plugin-package-json/parser",
      "rules": {
        "package-json/valid-package-def": "error",
        "package-json/require-author": "error",
        "package-json/require-license": "error",
        "package-json/require-repository": "error",
        "package-json/require-version": "error",
        "package-json/require-keywords": "error",
        "package-json/require-bugs": "warn",
        "package-json/require-homepage": "warn",
        "package-json/sort-collections": "error",
        "package-json/valid-name": "error",
        "package-json/no-redundant-files": "error",
        "package-json/prefer-repository-shorthand": "warn"
      }
    }
  ]
}

Integração com Git Hooks

Automatize a validação antes de cada commit com husky e lint-staged:
npm install --save-dev husky lint-staged
// No package.json
{
  "lint-staged": {
    "package.json": "eslint --fix"
  }
}

Antes e depois

Antes do plugin Depois do plugin
❌ 3h debugando erro de publicação ✅ Zero erros em produção
❌ PRs rejeitados por problemas simples ✅ PRs aprovados na primeira tentativa
❌ Pacotes publicados sem campos obrigatórios ✅ Consistência total no monorepo
❌ Code review desperdiçando tempo ✅ Tempo de review reduzido em 40%

Dica extra

Combine este plugin com o eslint-plugin-jsonc para validar outros arquivos JSON do projeto, como configurações de TypeScript e Prettier. Assim, toda a base de configuração do seu projeto fica protegida.
O eslint-plugin-package-json resolve em minutos uma categoria inteira de problemas que assombram times de desenvolvimento. Em uma era onde código gerado por IA é cada vez mais comum, ter validações automatizadas para arquivos críticos como o package.json não é luxo — é necessidade.
Lote VIP - Apenas 30 Vagas

Chega de garimpar vagas: Automatize sua busca com n8n e IA

Pare de perder horas rolando o LinkedIn. Construa um agente autônomo que caça oportunidades, lê os requisitos em segundos e envia apenas as vagas com match perfeito direto no seu Telegram.

  • Fim do trabalho manual: Workflows varrendo a web 24/7
  • Assertividade: Filtros inteligentes de stack com IA
  • Condição Exclusiva: Lote Relâmpago quase esgotando

Com o Especialista

Ramos de Souza Janones

Engenheiro Full Stack Sênior

Garantir Lote Relâmpago ➔ ⚠️ Poucas vagas restantes
Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade dedicado a linguagens de programação, banco de dados, DevOps, Internet das Coisas (IoT), tecnologias da Indústria 4.0, cibersegurança e startups. Com curadoria de conteúdos de qualidade, o projeto é mantido por Ramos de Souza Janones.

Mais recentes

ShadScan: Gere Código shadcn/ui a Partir de Prints

Descubra como o ShadScan usa IA para transformar prints de componentes UI em código shadcn/ui e Tailwind CSS pronto...

Masterclass Ensina Profissionais de TI a Automatizar a Busca por Vagas Usando IA e n8n

Encontrar a vaga ideal no mercado de tecnologia não precisa mais ser um processo manual, repetitivo e exaustivo. Uma...

Sincronizando PostgreSQL e Turbopuffer com Puffgres

Guia Definitivo: Sincronizando PostgreSQL e Turbopuffer com Puffgres para Buscas Vetoriais Avançadas A integração de inteligência artificial em aplicações modernas...

3 Técnicas para Reduzir Consumo de Tokens no Claude Code e Codex

Aprenda 3 técnicas eficientes para reduzir o consumo de tokens no Claude Code e Codex. Otimize custos, melhore a...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.
Masterclass Online

Automação de Busca de Vagas Tech com n8n e IA

Construa o seu próprio recrutador autônomo. Aprenda a varrer a internet, ler requisitos com LLMs e receber as vagas com match perfeito no seu Telegram ou Slack.

  • Workflows visuais com n8n
  • Filtros inteligentes de stack com IA
  • Alertas de vagas em tempo real na nuvem

Com o Especialista

Ramos de Souza Janones

Engenheiro Full Stack Sênior

Garantir Minha Vaga ➔ Inscrições via Sympla

Entenda Componentes de Cache no Next.js

O modelo de cache do Next.js 16 por trás das Navegações Instantâneas. Aprenda a usar use cache, cacheLife e...

Grok 4.5: mais rápido e integrado ao Cursor

O laboratório de IA de Elon Musk, agora com nova identidade visual, acaba de dar mais um passo à...

Mais Lidos

Guia Definitivo do NVM: Instalação e Troca de Versões do Node.js

Você já teve problemas ao atualizar o Node.js e...

Assistente IA em Raspberry Pi: O PicoClaw na Prática

Neste artigo conheça o PicoClaw: Assistente IA em Raspberry Pi:...

Guia de Desenvolvimento de Jogos

Realizamos uma seleção de 9 livros fundamentais para quem...

GitHub Descentralizado: Promessa de Autonomia

Fundador do Twitter quer doar 10 bitcoins para quem...
E-Zine Dev

Evolua para Sênior

Estratégias de Node.js, arquitetura Limpa e IA que nunca publicamos no blog. Junte-se a +10.000 devs.

Assinar Gratuitamente Zero spam. Cancele quando quiser.

Recursos da Comunidade

Carreira Internacional

JOB NA GRINGA

Meta de Salário Remoto
U$ 5.000/mês

O mapa completo para programadores do Brasil conquistarem contratos internacionais e mudarem de vida financeira.

  • Vagas exclusivas semanais: Membros acessam vagas com 7 dias de antecedência.
  • Workshops e lives gravadas: Buscar vagas não é óbvio. Nós te mostraremos como.
  • 498 Portais de vagas: Que contratam Brasileiros direto na sua dashboard.
  • Mentorias com Recrutadores: Encontros semanais ao vivo com Erika Linares.
  • Inglês diário com foco em conversação: Treine para entrevistas num ambiente sem julgamentos.
  • Suporte pós-contratação: Contabilidade e recebimento legal com a menor taxa.
Garantir Minha Vaga

Inscrição segura via Hotmart

Você vai gostarrelacionados
Continue aprendendo

E-Zine Dev Ramos

Quer dominar arquitetura e IA?

Junte-se a +10.000 profissionais. Receba semanalmente estratégias de Node.js, React e IA que nunca publicamos no blog.

Assinar Gratuitamente Zero spam. Cancele quando quiser.