Node.js é um ambiente de execução Javascript de código aberto e multiplataforma. Nos últimos anos, tornou-se uma escolha popular para o desenvolvimento web back-end devido ao seu rápido desempenho de Entrada/Saída (I/O) e imbatível sintaxe JavaScript. Além disso, sua natureza adaptativa permite uma rápida personalização, fazendo com que esta tecnologia de servidor se destaque de seus concorrentes.
Gerenciador de Pacotes do Node.js — Uma Visão Geral
Node.js Package Manager ou npm é o gerenciador de pacotes padrão para JavaScript. Npm é frequentemente usado para instalar scripts de projeto e operar módulos externos em um Node.js projeto. Além disso, ele acompanha os módulos instalados em um projeto usando o arquivo package.json , que está localizado no diretório do projeto. Npm armazena e registra as seguintes informações:
- Módulos necessários para um projeto e suas versões instaladas, se houver.
- Descrição de metadados de um projeto que inclui detalhes do autor e licença, para citar alguns.
- Scripts executáveis para automatizar tarefas relacionadas ao projeto ou orientadas a objetivos.
Neste tutorial, vamos orientá-lo pelas etapas de uso dos módulos do Node.js com o npm e o arquivo package.json.
Vamos começar!
Pré-requisitos
Para acompanhar este tutorial, você precisará do seguinte:
- Node.js deve estar instalado em seu sistema.
- Siga as instruções para instalar o Node.js no Ubuntu 18.04
-
A versão mais recente do Ubuntu instalada em seu sistema.
Passo 1: Criar um arquivo package.json
Vamos começar nosso tutorial pegando o exemplo de um projeto fictício usando o locator módulo do Node.js. O projeto visa coletar o endereço IP do usuário e compartilhar a saída como o país de origem do usuário. Como estamos focados em entender o uso de Node.js módulos com o npm, não há necessidade de escrever os módulos manualmente. Em vez disso, usaremos os pacotes pré-instalados e personalizáveis em nosso projeto.
JSON ou JavaScript Object Notation é um formato padrão usado para compartilhar e transmitir dados. Inicialmente, criaremos um arquivo JSON que armazenará e gerenciará as dependências de software. No entanto, criar um arquivo package.json manualmente é cansativo e demorado. Para simplificar, usaremos o comando init para criar o arquivo package.json em vez de colocar nossos esforços em escrever blocos extras de código para escrever nosso JSON do zero.
-
init comando
Primeiro, vamos criar uma nova pasta usando o comando mkdir e nomeá-la como locator:
|
1 |
mkdir locator |
Em seguida, use o comando cd para mover-se para a pasta recém-criada:
|
1 |
cd locator |
Depois, digite ENTER npm para inicializar o prompt interativo:
|
1 |
npm init |
Depois disso, você verá a saída:

1. name
Você será direcionado para o name do seu novo projeto; a pasta atual. Você verá os valores padrão entre parênteses (). Para manter este tutorial simples e fácil de entender, usaremos as opções padrão. Pressione ENTER para aceitar e continuar.
2. version
O próximo valor é o nome da version , que é um requisito fundamental se você compartilhar seu projeto no repositório de pacotes npm.
|
Nota: Os pacotes do Node.js seguem o guia de Versionamento Semântico (semver). Primeiro número: O MAJOR versão e muda apenas quando a API muda. Segundo número: A MINOR versão que muda quando recursos adicionais são adicionados. Último número: A PATCH versão que muda quando um erro ou bug é resolvido. |
3. description
A description é uma string informativa que descreve o processo de trabalho do módulo Node.js. Em nossa demonstração, o projeto locator obterá o endereço IP do usuário e retornará o país de origem.
|
Nota: Na maioria das vezes, os módulos têm um arquivo index.js como ponto de entrada. Esta também é a propriedade main do arquivo package.json, o ponto de entrada para módulos npm. No entanto, se o arquivo package.json não for encontrado, o Node.js carregará o arquivo index.js automaticamente. |
4. test comando
É um script ou comando executável para executar os testes do seu projeto. Como os testes estão fora do escopo do nosso tutorial, vamos pular isso e pressionar ENTER.
5. init comando
O comando init solicitará o Repositório GitHub do projeto. Novamente, vamos pular esta parte e continuar.
6. keywords
Palavras-chave são um array de strings usadas para pesquisar um repositório. Recomenda-se manter as palavras-chave precisas e relevantes para o seu projeto para que sejam facilmente rastreáveis.
Liste estas palavras-chave como strings e separe-as usando vírgulas. Em nosso projeto, digite ip, country, latitude, e longitude no prompt e você as verá incluídas como palavras-chave no package.json.
7. author
Trate o campo author como feedback e uma forma de interagir com seus usuários. Por exemplo, se os usuários detectarem um erro em seu módulo, eles podem usar este campo para notificá-lo e resolver o erro.
-
Formato: "Nome \<E-mail\> (Website)".
-
Demonstração: "Paul\<paul@your_domain\> (https://your_domain)"
-
Adicionar dados de e-mail e website é opcional. No entanto, você pode especificar um autor válido e adicionar seus detalhes de contato como um author. Confirme os detalhes e pressione ENTER.
8. license
O campo license ilustra os termos e condições legais que os usuários devem conhecer ao usar seu módulo. Como os Node.js módulos são de código aberto, o npm o configura para ISC-license automaticamente.
Navegue até a página de licenças de código aberto e escolha a Open Source Initiative que melhor se adapta às suas necessidades. Digite UNLICENSED no prompt se você não precisar de uma licença para seu repositório. Em nosso tutorial, usaremos a licença ISC padrão. Pressione ENTER para concluir este processo.
O comando init criará o arquivo package.json e exibirá o resultado:

Em seguida, pressione ENTER para continuar e criar o arquivo package.json . Nosso arquivo JSON manterá um registro de todos os módulos e pacotes que instalaremos em nosso projeto.
Na próxima etapa, instalaremos as dependências e os módulos do Node.js.
Etapa 2: Instalar Dependências e Módulos
Criar bibliotecas externas personalizadas consome tempo e exige esforços árduos. Alternativamente, a maneira mais eficaz é instalar dependências predefinidas e bibliotecas externas. Em nosso tutorial, usaremos a biblioteca HTTP para permitir que nosso módulo localizador de demonstração faça uma solicitação de API externa para coletar dados geográficos.
Neste guia, usaremos a biblioteca axios para fazer solicitações HTTP. Primeiro, vamos instalar o axios:
|
1 |
npm install axios --save |
Comece instalando o pacote npm seguido por listá-los com espaçamento separado. Além disso, inclua a tag --save para garantir que o projeto seja salvo como uma dependência do projeto.
Você verá a saída:

Abra o package.json usando o nano ou qualquer editor de texto de sua escolha:
|
1 |
nano package.json |
Observe a propriedade recém-adicionada destacada na parte inferior do bloco de código:

-
Baixar Dependências de Desenvolvimento
As dependências de desenvolvimento são pacotes usados no desenvolvimento do projeto e não têm utilidade na produção ou manutenção do projeto. Embora essas dependências possam parecer ineficazes em áreas de produção, elas desempenham um papel significativo na escrita e reescrita de códigos.
Assim como os linters de código, as dependências de desenvolvimento desempenham um papel vital no desenvolvimento de software. Na maioria das vezes, os desenvolvedores usam linters de código para manter a uniformidade e a consistência no estilo durante o desenvolvimento do projeto, o que de outra forma seria inútil na produção.
Vamos instalar um linter como uma dependência de desenvolvimento para o seu projeto. Além disso, use a flag --save-dev para salvar o eslint como uma dependência necessária para o desenvolvimento:
|
1 |
npm i eslint@6.0.0 --save-dev |
We added @6.0.0 à nossa dependência para que, quando atualizarmos os módulos, eles sejam marcados com uma versão. O símbolo @ notificará o npm para procurar uma tag específica que você deseja instalar. Agora, reabra o arquivo package.json :
|
1 |
nano package.json |
Você verá a saída:

- Arquivos autogerados: node_modules e package-lock.json
No início, ao instalar um pacote no projeto Node.js, os arquivos package.json e package-lock.json são criados automaticamente. Confirme esses arquivos no diretório de trabalho:
![]()
Como a maioria das dependências instaladas é armazenada em node_modules pasta, é aconselhável não enviar esta pasta para o seu repositório controlado por versão. Com o aumento no número de dependências instaladas, o tamanho da node_modules também aumenta.
Por outro lado, o package-lock.json arquivo mantém um registro das versões exatas instaladas, portanto não há necessidade de incluir node_modules explicitamente. Ao contrário da node_modules pasta, você pode enviar este arquivo para o seu repositório controlado por versão porque ele fornece uma representação detalhada de todas as suas dependências junto com suas versões.
- Instalar usando package.json
Os arquivos package.json e package-lock.json permitem que você configure as mesmas dependências do projeto antes de iniciar o desenvolvimento do projeto. Navegue pela sua árvore de diretórios e crie uma nova pasta no mesmo nível de diretório que o locator. Nomeie a nova pasta como cloned_locator:
|
1 2 |
cd .. mkdir cloned_locator |
Em seguida, vá para o cloned_locator:
|
1 |
cd cloned_locator |
Importe os arquivos package.json e package-lock.json de locator para cloned_locator:
|
1 |
cp ../locator/package.json ../locator/package-lock.json . |
O . significa a pasta atual. Instale os módulos necessários usando o seguinte comando:
|
1 |
npm i |
Inicialmente, o npm verificará o arquivo package-lock.json para instalar os módulos. Se o arquivo lock não estiver disponível, ele lerá o arquivo package.json para determinar as instalações.
Em geral, instalar a partir do package-lock.json é simples porque o arquivo lock contém a versão exata dos módulos e suas dependências. Isso significa que quando você está instalando usando o package.json, npm economizará o tempo extra necessário para descobrir uma versão compatível e estável.
Ignore as dependências de desenvolvimento adicionando a tag --production :
|
1 |
npm i --production |
Depois disso, volte para o locator:
|
1 |
cd ../locator |
- Instalações Globais
Até agora, instalamos os módulos npm localmente. No entanto, você também tem a alternativa de instalar pacotes globalmente e usá-los via comando shell ou CLI. Por exemplo, você pode navegar no projeto locator atual usando a biblioteca Hexo e gerenciar seu site estático. Use o seguinte comando com a tag -g para instalar o CLI do Hexo globalmente:
|
1 |
npm i hexo-cli -g |
|
Nota: Se você receber um erro ao instalar pacotes globalmente, tente este comando sudo npm i hexo-cli -g com credenciais de root. |
Use o seguinte comando para verificar se o pacote foi instalado com sucesso:
|
1 |
hexo --version |
Você verá a saída:

Passo 3: Gerenciar e Atualizar Módulos
Um gerenciador de pacotes tem mais a fazer do que apenas instalar os módulos do Node.js. Existem muitas opções de personalização onde você pode listar, atualizar, desinstalar ou até mesmo adicionar uma camada de segurança conforme sua conveniência.
Nesta seção, aprenderemos como:
-
Listar módulos
-
Atualizar módulos
-
Desinstalar módulos
-
Auditar módulos
Vamos discutir cada um em detalhes:
-
Listar Módulos
Listar módulos, como o nome sugere, fornecerá os detalhes de todos os módulos instalados no projeto. Em vez de ler o arquivo package.json , você pode usar o comando ls ou list para conhecer os módulos do seu projeto em detalhes:
|
1 |
npm ls |
Você verá a saída:

Por padrão, o comando ls lista toda a árvore de dependências que inclui as dependências do projeto e o módulo do qual ele depende. No entanto, você também pode ter uma visão geral e focar explicitamente em um módulo específico. Use o seguinte comando para verificar os módulos que você instalou sem suas dependências:
|
1 |
npm ls --depth 0 |
Você verá a saída:

-
Atualizar Módulos
É sempre aconselhável manter seu módulo npm atualizado para que você não enfrente falhas ou conflitos de software. Use o seguinte comando para verificar se há necessidade de uma atualização:
|
1 |
npm outdated |
Você verá a saída:

Vamos entender cada termo em detalhes:
- Package: Ele lista o Package atual instalado no seu projeto.
- Current: Isso mostra a versão Current do pacote.
- Wanted: Mostra o npm versão que melhor se adapta ao requisito de versão em package.json.
- Latest: Ele mostra o mais recente npm lançado que você deve atualizar se necessário.
- Location: O pacote Location na árvore de dependências.
Como sugerido, podemos atualizar o nosso npm para uma versão estável. Use o seguinte comando para atualizar o seu pacote atual:
|
1 |
npm up eslint |
Você verá a saída:

Em vez de atualizá-los um por um, você também pode atualizar todos os módulos de uma vez usando o up comando:
|
1 |
npm up |
-
Desinstalar Módulos
Muitas vezes, uma dependência pode não mostrar a saída esperada e você precisa criar uma dependência personalizada. Sob tais cenários, você tem a opção de desinstalar dependências dos seus arquivos package.json e package-lock.json . Suponha que você tenha axios como dependência e ele falhe em fornecer um resultado satisfatório. Você sem dúvida removerá este repositório do seu projeto. Use o uninstall ou un comando para remover axios:
|
1 |
npm un axios |
Você verá a saída:

Embora o uninstall comando tenha removido a dependência, não recebemos nenhuma notificação de sua remoção. Vamos listar as dependências para ver quantas dependências temos agora:
|
1 |
npm ls --depth 0 |
Você verá a saída sem nenhuma dependência do axios presente na lista:

-
Auditar Módulos
Se as dependências instaladas no seu projeto estiverem propensas a qualquer ameaça potencial de segurança, você poderá detectá-las. Primeiro, você precisa instalar uma versão desatualizada do módulo request para ver como o módulo de auditoria funciona:
|
1 |
npm i request@2.60.0 |
Você verá a saída solicitando a correção de ameaças ou vulnerabilidades:

Para expandir os detalhes sobre vulnerabilidades e ameaças, use o audit comando:
|
1 |
npm audit |
Você verá um relatório de segurança detalhado:

Para resolver essas vulnerabilidades, use o fix comando:
|
1 |
npm audit fix |
Você verá a saída:

Você deve ter notado que duas das nove vulnerabilidades foram corrigidas. No entanto, as sete vulnerabilidades restantes persistem em suas dependências porque o audit fix não resolve todos os problemas. Para resolver este problema, você pode precisar atualizar sua dependência para uma versão superior usando uma API diferente. Tenha cuidado ao atualizar, pois há a probabilidade de quebrar o código mais acima na árvore de dependências. Use o seguinte comando para confirmar que as vulnerabilidades desapareceram:
|
1 |
npm audit fix --force |
Tenha cuidado ao usar uma API diferente para resolver ameaças de vulnerabilidade, pois se você não tiver certeza sobre isso, pode acabar quebrando a funcionalidade do código.
Conclusão
Em conclusão, demonstramos como usar módulos do Node.js com o npm e o package.json. Além disso, passamos pelos métodos de listagem, atualização, gerenciamento, auditoria e desinstalação de nossas dependências de pacotes. Como próximo desafio, incentivamos você a usar os conceitos discutidos neste guia e experimentar a instalação e o teste de pacotes por conta própria. Você também pode tentar construir aplicações Node.js e configurar dependências para elevar seu aprendizado.
Além disso, existem muitos outros materiais de aprendizado sobre Node.js e tópicos de JavaScript que você pode encontrar em nosso blog:
- Instalando o Node.js no CentOS 8: um Guia Completo
- Conectando o PostgreSQL com Aplicações Node.js: Um Tutorial
- Usando o cliente HTTP Axios em uma Aplicação React: Um Tutorial
- Como Implantar um App Node.js (Express.js) com Docker no Ubuntu 20.04
Boa Computação!
Comentários
Nenhum comentário ainda. Seja o primeiro.