Atualize todas as dependências do Node.js para a versão mais recente

Quando você instala um pacote utilizando npm install <packagename>, a última versão disponível do pacote é baixada e colocada na pasta node_modules, e uma entrada correspondente é adicionada nos arquivos package.json e package-lock.json presentes na pasta atual.

o npm calcula as dependências e também instala a última versão delas.

Digamos que você instale o cowsay, uma ferramenta de linha de comando bem legal que te permite fazer uma vaca falar coisas.

Quando você roda npm install cowsay, essa entrada é adicionada no arquivo package.json:

{
"dependencies": {
"cowsay": "^1.3.1"
}
}

e esse é um trecho do package-lock.json, onde removemos as subdependências para facilitar a leitura:

{
"requires": true,
"lockfileVersion": 1,
"dependencies": {
"cowsay": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/cowsay/-/cowsay-1.3.1.tgz",
"integrity": "sha512-3PVFe6FePVtPj1HTeLin9v8WyLl+VmM1l1H/5P+BTTDkMAjufp+0F9eLjzRnOHzVAYeIYFF5po5NjRrgefnRMQ==",
"requires": {
"get-stdin": "^5.0.1",
"optimist": "~0.6.1",
"string-width": "~2.1.1",
"strip-eof": "^1.0.0"
}
}
}
}

Agora esses 2 arquivos nos dizem que instalamos a versão 1.3.1 do cowsay, e nossa regra para atualizações é ^1.3.1, o que o npm pode atualizar para versões patch e minor: 1.3.2, 1.4.0 e assim por diante.

Se há uma nova versão minor ou patch e nós digitamos npm update, a versão instalada é atualizada, e o arquivo package-lock.json rapidamente se atualiza com a nova versão.

o package.json permanece sem alterações.

Para descobrir novas atualizações dos pacotes, rode npm outdated.

Aqui está uma lista de alguns pacotes desatualizados em um repositório que não recebe atualizações a um bom tempo:

lista exibindo as versões mais atualizadas de alguns pacotes

Algumas dessas atualizações são para versões major. Executando npm update elas não serão atualizadas. Versões major nunca são atualizadas desse jeito porque elas (por definição) introduzem mudanças sujeitas a quebras em versões antigas, e o npm quer nos poupar desse problema.

Para atualizar para uma versão major desses pacotes, instale o pacote npm-check-updates globalmente:

npm install -g npm-check-updates

e então rode:

ncu -u

isso irá atualizar as versões no package.json, tanto dependencies quanto devDependencies, assim o npm poderá instalar as versões major.

Agora você está pronto para executar as atualizações:

npm update

Se você só baixou o projeto sem as dependências do node_modules e quer instalar as novas versões, basta rodar

npm install