Como melhorar o package.json do seu projeto

weltonfelix

Welton Felix

Posted on July 11, 2020

Como melhorar o package.json do seu projeto

Vamos falar sobre como deixar o seu package.json mais detalhado e com mais informações sobre o seu projeto. Isso pode ser muito útil se você estiver desenvolvendo uma library ou outro projeto open source.


Primeiros Passos

Para começar, eu criei um projeto utilizando o npm. Estou usando o Linux, mas os comandos são os mesmos para macOS e Windows.

$ mkdir minhaapi
$ cd minhaapi
$ npm init -y

Podemos perceber que o package.json foi criado. Ele deve estar desta forma:

{
  "name": "minhaapi",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

Configurações Básicas

Agora vamos falar sobre as informações básicas do package.json.

  1. name

    O nome da chave já fala por si só. Aqui você deve colocar o nome da sua aplicação, por exemplo:

    "name": "minhaapi"
    
  2. version

    Neste campo você deve colocar a versão da sua aplicação.

    "version": "0.1.0"
    

    Aqui você pode conferir mais detalhes sobre versionamento semântico.

  3. description

    Coloque aqui uma descrição do seu projeto, não precisa ser um texto longo.

    "description": "API for data on COVID-19"
    

Configurações da Aplicação

Nesta parte você pode colocar informações importantes acerca da execução do seu projeto.

  1. main

    Use o main para indicar o ponto de entrada da sua aplicação.

    "main": "index.js"
    
  2. scripts

    Essa parte é bem importante, aqui você pode adicionar scripts com comandos uteis para sua aplicação.

    Você pode adicionar scripts para iniciar a aplicação em modo de desenvolvimento, rodar testes, migrations, seeds, realizar o build etc.

    "scripts": {
      "start": "nodemon",
      "knex:migrate": "knex migrate:latest",
      "knex:seed": "knex seed:run",
      "test": "jest",
      "build": "node index.js"
    }
    

    Após isso, basta rodar no terminal: npm run nome_do_script ou yarn nome_do_script.

  3. dependencies

    Aqui não tem muito o que alterar, quando você instala alguma dependência com npm install dependência ou yarn add dependência, são adicionadas neste campo automaticamente as dependências necessárias para sua aplicação funcionar em produção.

    "dependencies": {
      "express": "^4.17.1",
      "knex": "^0.21.1",
      "sqlite3": "^4.2.0"
    }
    
  4. devDependencies

    Seguindo a lógica do campo dependencies, aqui são descritas as dependências utilizadas no desenvolvimento da aplicação. Essas dependências são desnecessárias em ambiente de produção.

    Elas são adicionadas com npm install dependência -D ou yarn add dependência -D.

    "devDependencies": {
      "jest": "^25.2.6",
      "nodemon": "^2.0.2",
      "supertest": "^4.0.2"
    }
    
  5. engines

    Nessa parte você pode especificar quais versões do node e do npm são compatíveis com sua aplicação.

    "engines" : {
      "node" : ">=10.21.0"
    }
    
  6. os

    Você pode especificar aqui quais são os sistemas operacionais compatíveis com o seu projeto. Pode também informar quais não são compatíveis.

    "os" : [ "!darwin", "linux", "win32"]
    // Ao usar "!" antes da plataforma, você informa que ela não é suportada
    

    As plataformas disponíveis são todos os possíveis resultados do global process.plataform.

    Para mais informações, confira a documentação do Node.js.

  7. cpu

    Da mesma forma você pode informar quais arquiteturas são compatíveis e quais não são compatíveis com sua aplicação.

    "cpu" : [ "x64", "arm", "ia32", "!mips" ]
    

    As arquiteturas que podem ser informadas são todos os possíveis resultados do global process.arch.

    Para mais informações, consulte a documentação do Node.js.


Informações sobre Repositórios, Licença e Autoria

  1. homepage

    Você pode colocar a URL da página do seu projeto. Pode ser o readme do seu repositório no Github.

    "homepage": "https://github.com/weltonfelix/minhaapi#--------"
    
  2. bugs

    Aqui é onde você informa o local onde o usuário pode reportar bugs, como a página de issues do seu repositório, e seu e-mail.

    "bugs": {
      "url" : "https://github.com/weltonfelix/minhaapi/issues",
      "email" : "contato.weltonf@gmail.com"
    }
    

    ou você pode informar apenas uma URL:

    "bugs": "https://github.com/weltonfelix/minhaapi/issues"
    
  3. license

    Agora você pode adicionar a sua licença. Pode ser uma licença comum, como a MIT, Apache-2.0…

    "license": "MIT"
    

    ou uma licença customizada.

    "license": "SEE LICENSE IN LICENSE.md"
    

    Você também pode usar UNLICENSED para informar que seu projeto é privado.

    "license": "UNLICENSED"

    Nesta página você encontra todas as licenças comuns que podem ser utilizadas.

  4. private

    Você pode adicionar esse campo se estiver desenvolvendo um projeto privado, ele previne que o pacote seja publicado acidentalmente.

    "private": true
    
  5. author

    O author é o principal responsável pelo projeto, somente uma pessoa pode ser informada nesse campo.

    O nome é obrigatório, você também pode adicionar e-mail e URL.

    "author": {
      "name" : "Welton Felix",
      "email" : "contato.weltonf@gmail.com",
      "url" : "https://github.com/weltonfelix"
    }
    

    Você também pode informar o autor de forma mais simples:

    "author": "Welton Felix  (https://github.com/weltonfelix)"
    
  6. contributors

    Aqui você pode informar as pessoas que contribuíram no desenvolvimento do projeto. Podem ser inseridas as mesmas informações do campo author.

    "contributors": [
      {
        "name": "Ross Cordova",
        "email": "rosscordova@outlook.com",
        "url": "https://rosscordova.com"
      },
      {
        "name": "Elissa Guzman",
        "email": "elissaguzman@gmail.com",
        "url": "https://elissaguzman.com"
      }
    ]
    

    ou

    "contributors": [
      "Ross Cordova  (https://rosscordova.com)",
      "Elissa Guzman  (https://elissaguzman.com)"
    ],
    
  7. repository

    Agora você pode descrever as informações do seu repositório, como o tipo e a URL.

    "repository": {
      "type" : "git",
      "url" : "https://github.com/weltonfelix/minhaapi.git"
    }
    

    Se o seu package.json não estiver na raiz do projeto, você pode informar o diretório da aplicação.

    "repository": {
      "type" : "git",
      "url" : "https://github.com/weltonfelix/minhaapi.git",
      "directory": "/api"
    }
    

Informações Adicionais

  1. keywords

    Você pode adicionar palavras-chave, o que ajuda bastante se seu projeto for publicado no npm.

    "keywords": ["covid19", "api", "express", "app", "rest", "restful"]
    
  2. files

    Esse campo funciona parecido com o inverso de um .gitignore, aqui você informa quais arquivos devem ser enviados para o npm quando você publicar o pacote.

    "files": ["index.js", "/src/*", "!/src/server.js"]
    

Com essas informações, o seu package.json vai ficar bem mais completo e organizado.

Para mais informações, acesse a documentação na página do NPM.


Cover Image by Safar Safarov on Unsplash

💖 💪 🙅 🚩
weltonfelix
Welton Felix

Posted on July 11, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related