From Tatooine

🧠 A anatomia do package.json

February 14, 2021 ‱ đŸ€” 3 min read
Tags: javascript, packagejson

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"
}

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"
}

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

npm run development

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"
}

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

npm install --save-dev mocha

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

npm install --production

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.