NPM - Atualizando dependências com segurança
Tags: npm, node
Published: 2021-07-20 13:24:53

## Partes da versão?

Sim!, o controle de versão do NPM (node package manager) segue um controle de versões semânticos, portanto, esse controle de versões tem 3 partes: Major.Minor.Patch

```
1 - Patch . Isso é incrementado quando é feita uma correção de bug que não quebra o código de consumo.
2 - Minor . Isso é incrementado quando são adicionados recursos que não quebram o código de consumo.
3 - Major . Isso é incrementado quando mudanças significativas são feitas.
```

## Beleza, mas oque significa o `^` ou o `~` ?

Você quer instalar uma nova versão de um pacote e se depara com essa dupla frente as versões, oque elas significam afinal?


Uma versão geralmente tem um `^` na frente dela (por exemplo ^16.8.6). Isso significa que a versão secundária mais recente pode ser instalada com segurança. Portanto, neste exemplo, ^16.12.1 pode ser instalado com segurança se esta for a versão mais recente em 16.x.

Às vezes, uma versão tem um `~` na frente dela (por exemplo ~16.8.6). Isso significa que apenas a última versão do patch pode ser instalada com segurança. Portanto, neste exemplo, ^16.8.12 pode ser instalado com segurança se esta for a versão mais recente em 16.8.x.

## NPM INSTALL, resolve?

Depende, se os pacotes ja estiverem instalados na node_modules não será atualizado.

Se não existe a node_modules mas existe o `package-lock.json` então será instalado apenas as versões específicas do próprio arquivo.

O `npm install` instalará as novas versões apenas se não existir nenhum dos dois arquivos, instalando a versão mais recente dos pacotes existentes no package.json.

## Ta, mas e com segurança?

Vamos descobrir as dependências que estão desatualizadas rodando o seguinte comando:

```
npm outdated
```

## Atualizando todos os pacotes

```
npm update
```

Este comando atualiza todos os pacotes tanto na `node_modules` como no `package-lock.json`, atualizando a árvore de dependências do projeto.

## Atualizando um pacote específico

```
npm update "package_name"
```

Este comando atualiza um módulo específico.

## Atualizando dependências com grandes mudanças (Major)

```
npm install package_name@latest
```

> Verifique SEMPRE se aplicação não está quebrando por meio de testes.

> Repita o processo para outros pacotes com grandes mudanças

## Caminho mais rápido?

```
npx npm-check-updates -u
```

Isso atualizará as dependências para as versões mais recentes (incluindo alterações de versão principais) no package.json arquivo. Se quisermos continuar com as atualizações, precisamos executar o seguinte comando:

```
npm install
```

Isso fará com que os pacotes da pasta node_modules e o package-lock.json sejam atualizados.


Resumão:

1 - Use `npm outdated` para descobrir dependências que estão desatualizadas.
2 - Use `npm update` para realizar atualizações de dependências seguras.
3 - Use `npm install <packagename>@latest` para atualizar para a versão principal mais recente de um pacote.
4 - Use `npx npm-check-updates -u` e `npm install` para atualizar todas as dependências para suas versões principais mais recentes.



Achou esse post útil? me da um `Hello` no [Twitter](https://twitter.com/tonybsilvadev)