Uma introdução ao gerenciador de pacotes npm
Introdução ao npm
npm
é o gerenciador de pacotes padrão para Node.js.
Em setembro de 2022, mais de 2,1 milhões de pacotes foram relatados como listados no registro npm, tornando-o o maior repositório de código de linguagem única do mundo, e você pode ter certeza de que existe um pacote para (quase!) tudo.
Começou como uma maneira de baixar e gerenciar dependências de pacotes Node.js, mas desde então se tornou uma ferramenta usada também em JavaScript frontend.
TIP
Yarn
e pnpm
são alternativas ao npm cli. Você também pode experimentá-los.
Pacotes
Instalando todas as dependências
Você pode instalar todas as dependências listadas no seu arquivo package.json
executando:
npm install
Isso instalará tudo o que o projeto precisa, na pasta node_modules
, criando-a se ela ainda não existir.
Instalando um único pacote
Você pode instalar um único pacote executando:
npm install <package-name>
Além disso, desde o npm 5, este comando adiciona <package-name>
às dependências do arquivo package.json
. Antes da versão 5, você precisava adicionar a flag --save
.
Muitas vezes, você verá mais flags adicionadas a este comando:
--save-dev
(ou-D
) que adiciona o pacote à seçãodevDependencies
do arquivopackage.json
.--no-save
que impede a gravação do pacote no arquivopackage.json
.--no-optional
que impede a instalação de dependências opcionais.--save-optional
que adiciona o pacote à seçãooptionalDependencies
do arquivopackage.json
.
Também podem ser usados atalhos das flags:
-S
:--save
-D
:--save-dev
-O
:--save-optional
A diferença entre devDependencies
e dependencies
é que a primeira contém ferramentas de desenvolvimento, como uma biblioteca de teste, enquanto a última é incluída no aplicativo em produção.
Quanto às optionalDependencies
, a diferença é que a falha na compilação da dependência não causará falha na instalação. Mas é responsabilidade do seu programa lidar com a falta da dependência. Leia mais sobre dependências opcionais.
Atualizando pacotes
A atualização também é facilitada, executando
npm update
Isso atualizará todas as dependências para suas versões mais recentes.
Você também pode especificar um único pacote para atualizar:
npm update <package-name>
Removendo pacotes
Para remover um pacote, você pode executar:
npm uninstall <package-name>
Versionamento
Além de downloads simples, o npm
também gerencia o versionamento, para que você possa especificar qualquer versão específica de um pacote ou exigir uma versão maior ou menor do que você precisa.
Muitas vezes, você descobrirá que uma biblioteca só é compatível com um lançamento principal de outra biblioteca.
Ou um bug na versão mais recente de uma biblioteca, ainda não corrigido, está causando um problema.
Especificar uma versão explícita de uma biblioteca também ajuda a manter todos na mesma versão exata de um pacote, para que toda a equipe execute a mesma versão até que o arquivo package.json
seja atualizado.
Em todos esses casos, o versionamento ajuda muito, e o npm
segue o padrão de versionamento semântico (semver).
Você pode instalar uma versão específica de um pacote, executando
npm install <package-name>@<version>
Você também pode instalar a versão mais recente de um pacote, executando
npm install <package-name>@latest
Executando Tarefas
O arquivo package.json suporta um formato para especificar tarefas de linha de comando que podem ser executadas usando
npm run <task-name>
Por exemplo, se você tiver um arquivo package.json com o seguinte conteúdo:
{
"scripts": {
"start": "node index.js",
"test": "jest"
}
}
É muito comum usar esse recurso para executar o Webpack:
{
"scripts": {
"watch": "webpack --watch --progress --colors --config webpack.conf.js",
"dev": "webpack --progress --colors --config webpack.conf.js",
"prod": "NODE_ENV=production webpack -p --config webpack.conf.js"
}
}
Então, em vez de digitar esses comandos longos, que são fáceis de esquecer ou digitar incorretamente, você pode executar
npm run watch
npm run dev
npm run prod