DEV Community

Cover image for npm 7 é o novo padrão e o que eu ganho com isso?
Eduardo Rabelo
Eduardo Rabelo

Posted on

npm 7 é o novo padrão e o que eu ganho com isso?

Créditos da Imagem

Finalmente, o npm 7 está geralmente disponível e publicado como o mais recente no registro do npm. Leia sobre as diferenças, novos recursos e melhorias de desempenho em comparação com o npm 6.

Com a versão 7 do npm, eles reduziram suas dependências em cerca de 54%, enquanto aumentaram a cobertura de testes em cerca de 17%. Também deve incluir um aumento de desempenho em várias áreas de acordo com seus próprios benchmarks .

npm 7 agora é a versão latest no registro npm e, portanto, é o padrão. Para instalar a nova versão do npm, você pode executar o seguinte comando em seu terminal de linha de comando:

npm install --global npm@latest
Enter fullscreen mode Exit fullscreen mode

A nova versão principal vem com alguns novos recursos e melhorias excelentes, incluindo espaços de trabalho (Workspaces), dependências de pares (peer dependencies) e um novo arquivo de bloqueio (lockfile). Ele também vem com algumas alterações importantes. Vamos ver quais são!

Novas Funcionalidades

1) Versão 2 do arquivo package-lock

Com o novo arquivo package-lock.json, teremos a capacidade de fazer compilações reproduzíveis de forma determinística. Agora ele deve incluir tudo que o npm precisa para instalar os pacotes necessários. Antes do npm 7, o yarn.lock era ignorado pelo npm, mas não é mais o caso. Agora ele pode usá-lo para se manter atualizado com a árvore de pacotes.

O novo lockfile deve ser compatível com os usuários do npm 6. No entanto, quando você executa npm install em um projeto com um lockfile da versão 1, ele substituirá esse arquivo pela nova estrutura. Isso pode ser evitado executando npm install --no-save durante a instalação.

2) Espaços de Trabalho (Workspaces)

Este é um dos novos recursos com o qual estou mais animado. Inclui um conjunto de funcionalidades que irão tornar muito melhor a gestão de múltiplos pacotes. Ele permite que você manipule pacotes de um único arquivo na raiz do seu projeto. Isso já foi possível fazer com, por exemplo, yarn, Lerna ou pnpm.

Para tornar o npm ciente de que o projeto atual é um espaço de trabalho, você deve adicionar a chave workspaces ao seu package.json. Isso pode ser feito adicionando cada subpasta ou usando um glob, como no exemplo abaixo:

{
  "name": "example",
  "version": "1.33.7",
  "workspaces": [
    "packages/*"
  ]
}
Enter fullscreen mode Exit fullscreen mode

Leia mais sobre os espaços de trabalho no rfc e nos documentos do npm .

3) Instalação automática de dependências de pares (peer dependencies)

Em versões anteriores ao npm 7, os desenvolvedores tinham que instalar as dependências de pares (peer dependencies). Agora o npm usará um novo algoritmo para garantir que as dependências de pares sejam instaladas corretamente. Se uma dependência de par, que não é compatível com a especificada, for instalada, o npm 7 irá bloquear a instalação.

Mudanças e Quebras

Como a nova versão é considerada uma versão principal, ela virá com algumas alterações importantes. Aqui estão alguns:

  • Você não pode mais usar require() nos módulos internos do npm. npm agora usa o campo package.exports.
  • A equipe reescreveu totalmente o npx para usar internamente o npm exec, o npx CLI ainda estará disponível. Algumas mudanças de funcionalidade são esperadas. Uma é que agora você será solicitado se tentar executar um módulo que ainda não está instalado.
  • As mudanças mencionadas acima com relação às dependências dos pares podem atrapalhar alguns fluxos de trabalho.
  • npm audit tem uma nova saída.
  • O npm 6 mostrou todos os pacotes por padrão durante a execução do npm ls. Com o npm 7, ele mostrará apenas os pacotes de nível superior. Execute npm ls --all para imitar o comportamento do npm 6.

Créditos

Top comments (0)