Gerador de Package.json

package.json
Próximo

Em vez de executar npm init e responder a onze perguntas, preencha um formulário e receba um package.json organizado e estruturado corretamente. Este gerador cobre os campos obrigatórios (nome, versão), os comumente usados (scripts, dependências, devDependencies, engines) e as conveniências (repositório, bugs, palavras-chave, licença) que tornam um pacote descobrível e publicável.

Como gerar seu package.json

  1. 1

    Digite nome e versão

    O nome segue as regras do npm: minúsculas, seguro para URL, até 214 caracteres. A versão é semver (por exemplo, 0.1.0).

  2. 2

    Escolha o tipo de módulo

    CommonJS (padrão) ou ESM via "type": "module". Importante para projetos Node.js 14+.

  3. 3

    Adicione scripts

    Start, build, test, lint, os comandos são executados com `npm run <name>`.

  4. 4

    Liste as dependências

    Pacotes de tempo de execução em dependências, ferramentas em devDependencies.

  5. 5

    Defina metadados

    Descrição, autor, licença, URL do repositório, palavras-chave.

  6. 6

    Copie a saída

    Cole em um novo package.json na raiz do projeto.

Os campos que mais importam

Campo Obrigatório? Notas
name Sim Minúsculas, 1-214 caracteres, seguro para URL
version Sim Semver (major.minor.patch)
type Não “module” para ESM, omita para CommonJS
main Recomendado Ponto de entrada para CommonJS (index.js)
exports Recomendado Mapa de exportações moderno para dual CJS/ESM
scripts Fortemente recomendado comandos npm run <name>
dependencies Conforme necessário Pacotes de tempo de execução
devDependencies Conforme necessário Ferramentas de construção, runners de teste, linters
engines Bom ter Faixa de versão do Node necessária
license Sim para publicação Identificador SPDX como MIT, Apache-2.0

Resumo de semver

  • 1.0.0, major.minor.patch
  • ^1.0.0, compatível com 1.x.x (>=1.0.0, <2.0.0)
  • ~1.0.0, apenas atualizações de patch (>=1.0.0, <1.1.0)
  • >=1.0.0 <2.0.0, faixa explícita
  • 1.0.0-beta.1, pré-lançamento
  • latest, tag npm, não uma versão

O padrão ao executar npm install package é ^, que permite atualizações não quebradas.

Scripts padrão que valem a pena ter

{
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js",
    "build": "tsc",
    "test": "vitest",
    "lint": "eslint .",
    "format": "prettier --write ."
  }
}

Armadilhas de nomenclatura

  • Sem maiúsculas. MyPackage falha no npm install.
  • Sem espaços. Use hífens: my-package.
  • Nomes com escopo começam com @org/ para organizações do GitHub ou npm: @acme/utils.
  • Palavras reservadas. node_modules, favicon.ico, core, express não podem ser usados como nomes de pacotes.

Opções de licença

Escolha um identificador SPDX reconhecido:

  • MIT, escolha comum mais permissiva.
  • Apache-2.0, permissiva com concessão de patente.
  • ISC, licença muito curta semelhante ao MIT, padrão do npm.
  • GPL-3.0-or-later, copyleft.
  • UNLICENSED, pacote privado, não para distribuição.

Strings de licença erradas ou ambíguas acionam avisos no npm publish.

Perguntas frequentes

Dependências são instaladas quando alguém executa npm install em um projeto que consome o seu. devDependencies são instaladas apenas no ambiente de desenvolvimento do pacote. Coloque pacotes de tempo de execução em dependências e ferramentas de teste/construção em devDependencies.

Sim, para aplicações. O lockfile fixa versões exatas e garante instalações reproduzíveis em máquinas e CI. Para pacotes de biblioteca publicados no npm, o lockfile é opcional, os consumidores obtêm seu próprio lockfile.

Apenas se você quiser que o pacote seja ESM (sintaxe de importação/exportação) por padrão. Sem ele, arquivos .js são tratados como CommonJS. Você também pode usar .mjs para arquivos ESM ou .cjs para arquivos CommonJS, independentemente de “type”.

As versões do Node contra as quais seu código foi testado. Uma escolha típica hoje é "engines": {"node": ">=18"}. É um aviso, não um erro, mas as ferramentas respeitam isso e os usuários fixam corretamente.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas