Como melhorar o package.json do seu projeto
Welton Felix
Posted on July 11, 2020
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
.
-
name
O nome da chave já fala por si só. Aqui você deve colocar o nome da sua aplicação, por exemplo:
"name": "minhaapi"
-
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.
-
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.
-
main
Use o
main
para indicar o ponto de entrada da sua aplicação."main": "index.js"
-
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
ouyarn nome_do_script
. -
dependencies
Aqui não tem muito o que alterar, quando você instala alguma dependência com
npm install dependência
ouyarn 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" }
-
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
ouyarn add dependência -D
."devDependencies": { "jest": "^25.2.6", "nodemon": "^2.0.2", "supertest": "^4.0.2" }
-
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" }
-
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
. -
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
.
Informações sobre Repositórios, Licença e Autoria
-
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#--------"
-
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"
-
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.
-
private
Você pode adicionar esse campo se estiver desenvolvendo um projeto privado, ele previne que o pacote seja publicado acidentalmente.
"private": true
-
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)"
-
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)" ],
-
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
-
keywords
Você pode adicionar palavras-chave, o que ajuda bastante se seu projeto for publicado no npm.
"keywords": ["covid19", "api", "express", "app", "rest", "restful"]
-
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
Posted on July 11, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.