DEV Community

Cover image for A anatomia do package.json 🧠
Stanley Gomes
Stanley Gomes

Posted on • Updated on

A anatomia do package.json 🧠

O que Ă© e para que serve?

Se vocĂȘ trabalha com javascript, com certeza jĂĄ ouviu falar e editou o famoso package.json. Nesse post, vou focar em mostrar algumas das funcionalidades e props disponibilizadas por esse arquivo para seu projeto.

O package.json Ă© um arquivo de um projeto javascript que Ă© responsĂĄvel por guardar informaçÔes, scripts e controle de versionamento de bibliotecas do projetos. Essas dependĂȘncias sĂŁo gerenciadas pelo NPM.

InformaçÔes sobre o projeto

VocĂȘ pode utilizar algumas propriedades do package.json para guardar informaçÔes sobre o projeto e que tambĂ©m sĂŁo Ășteis e necessĂĄrias ao publicar um pacote no NPM. VocĂȘ pode visualizar nesse link todas as propriedades reservadas do package.json.

Abaixo, um exemplo de configuraçÔes båsicas de um package.json

{
    "name": "nodevader",
    "version": "2.1.1",
    "description": "",
    "main": "index.js",
    "license": "MIT"
}
Enter fullscreen mode Exit fullscreen mode

A propriedade version utiliza a notação de versionamento semùntico. Jå a propriedade main é utilizada em alguns projetos como o ponto de entrada da aplicação.

Scripts

Na sessĂŁo de scripts vocĂȘ pode declarar alguns nomes para abreviar a execução de açÔes no projeto para usar em uma palavra.

Veja abaixo um exemplo de package.json com alguns scripts com diferentes execuçÔes para ambientes desenvolvimento, homologação e produção.

{
    "name": "nodevader",
    "version": "2.1.1",
    "description": "",
    "main": "index.js",
    "scripts": {
        "development": "NODE_ENV=development nodemon src/index.js",
        "staging": "NODE_ENV=staging pm2 start ecosystem-staging.config.js",
        "production": "NODE_ENV=development pm2 start ecosystem-production.config.js",
        "migrate:up": "node src/migrate.js"
    },
    "license": "MIT"
}
Enter fullscreen mode Exit fullscreen mode

Para executar um script, basta rodar o comando no terminal npm run SCRIPT_NAME:

npm run development
Enter fullscreen mode Exit fullscreen mode

Dependencias

A principal responsabilidade do package.json Ă© controlar as versĂ”es das dependĂȘncias de pacotes do projeto. Ele Ă© declarado como um objeto com nome e versĂŁo. É possĂ­vel instalar dependĂȘncias para ambiente apenas desenvolvimento e quando o NODE_ENV

{
    "name": "nodevader",
    "version": "2.1.1",
    "description": "",
    "main": "index.js",
    "scripts": {
        "development": "NODE_ENV=development nodemon src/index.js",
        "staging": "NODE_ENV=staging pm2 start ecosystem-staging.config.js",
        "production": "NODE_ENV=development pm2 start ecosystem-production.config.js",
        "migrate:up": "node src/migrate.js"
    },
    "dependencies": {
    "axios": "^0.21.1",
    "dotenv": "^8.2.0",
    "express": "^4.16.4",
    "winston": "^3.3.3"
  },
  "devDependencies": {
    "chai": "^4.2.0",
    "eslint": "^6.3.0",
    "mocha": "^8.2.1"
  },
    "license": "MIT"
}
Enter fullscreen mode Exit fullscreen mode

Para instalar e adicionar no package.json um dependĂȘncia de desenvolvimento:

npm install --save-dev mocha
Enter fullscreen mode Exit fullscreen mode

Para instalar apenas as dependĂȘncias e ignorar as dependĂȘncias de desenvolvimento basta adicionar a flag --production.

npm install --production
Enter fullscreen mode Exit fullscreen mode

Lock de dependĂȘncias

Quando vocĂȘ executa o comando npm install para instalar as dependĂȘncias do projeto, Ă© criado um arquivo package-lock.json que contĂ©m uma lista detalhada da ĂĄrvore de dependĂȘncias com a versĂŁo exata de cada dependĂȘncia para garantir maior precisĂŁo e velocidade no controle dos pacotes do projeto.

Recomenda-se deixar esse arquivo commitado no projeto, visto que ele sempre acompanha as alteraçÔes feitas no package.json.


Obrigado pela leitura! Espero que possa ter ajudado. 🚀

Até mais.

Top comments (4)

Collapse
 
marcotuliomelo profile image
Marco Tulio Melo

Com certeza ajudou muito, artigo top!

Collapse
 
stanley profile image
Stanley Gomes

Valeu Marco TĂșlio!!

Collapse
 
barbosamarlem profile image
Marlem Barbosa

Simples e objetivo. Parabéns!

Collapse
 
stanley profile image
Stanley Gomes

Valeu marlem ✌