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
Top comments (0)