NPM vs Yarn

NPM vs Yarn
Rafaella Ballerini
Rafaella Ballerini

Compartilhe

Introdução

Sabe quando você precisa desenvolver um projeto com JavaScript e reutilizar alguns códigos já prontos de pacotes e dependências, como aqueles arquivos na famosa pasta node modules? Então, NPM e Yarn são duas tecnologias responsáveis pelo gerenciamento e execução desses pacotes e dependências. Mas qual será a diferença entre cada um desses gerenciadores? Existe algum melhor que o outro? Você vai descobrir em breve aqui neste artigo!

Logomarca do gerenciador de pacote yarn a esquerda com as letras VS no centro e a logomarca do gerenciador de pacote NPM na direita. Banner da promoção da black friday, com os dizeres: A Black Friday Alura está chegando. Faça parte da Lista VIP, receba o maior desconto do ano em primeira mão e garanta bônus exclusivos. Quero ser VIP

Para que servem?

Como mencionado acima, ambos são gerenciadores de pacotes e dependências em projetos JavaScript. Mas como e por que isso acontece exatamente?

Em muitos projetos é comum utilizarmos alguns pacotes e dependências já existentes para facilitar o nosso desenvolvimento, seja em JavaScript ou qualquer outra linguagem. Um exemplo é o próprio React, uma biblioteca famosa utilizada quando queremos desenvolver páginas web componentizando a aplicação. Inclusive, se quiser saber mais sobre essa tecnologia, temos uma Formação React JS aqui na Alura!

Ainda utilizando como exemplo o React, se tivéssemos que atualizá-lo manualmente toda vez que surgisse algo novo, ou mesmo instalar cada uma das dependências necessárias que surgirem ao longo do desenvolvimento do projeto, nos daria muito trabalho e a chance de errarmos e esquecermos alguma coisa seria muito grande. Justamente por isso surgiram os gerenciadores de pacotes e dependências, que com apenas um comando já fazem isso tudo por nós.

Como é feito esse gerenciamento?

Tanto o NPM, quanto o Yarn utilizam um arquivo chamado package.json, onde são descritos os pacotes e dependências necessários para o projeto, com as suas versões. Para criar esse arquivo, é usado apenas o comando npm init ou yarn init.

Com isso, quando rodamos o comando npm install, no caso do NPM, ou yarn no caso do Yarn, já é atualizado e instalado tudo que for necessário para o projeto rodar corretamente.

Além disso, sempre que precisarmos instalar um novo pacote ou dependência durante o desenvolvimento do projeto, podemos fazer isso também apenas com uma linha de comando, com npm install <pacote> ou yarn add <pacote>.

Legal, agora entendi para que essas duas tecnologias servem e como elas funcionam, mas então qual seria a diferença de usar cada uma delas afinal?

NPM

Logomarca do gerenciador de pacote NPM.

Atualmente sendo o gerenciador de pacotes padrão do Node.JS, o NPM (Node Package Manager) é um projeto open source criado com o objetivo de facilitar a troca de códigos escritos em JavaScript.

Hoje ainda é o mais utilizado, justamente pois logo quando você instala o Node na máquina, ele já é instalado junto no seu sistema.

Mas o NPM não tem apenas um CLI (Command Line Interface) para você apenas executar comandos e gerenciar os pacotes e dependências. Ele também possui um site onde é possível encontrar sua documentação e todas as informações dos pacotes que deseja, além de um repositório onde fica armazenada uma base de dados JavaScript gigante e pública.

Porém, esse gerenciador começou a apresentar alguns problemas, como demora no tempo de instalação ou atualização, versões diferentes de dependências nas máquinas e até segurança. Assim então, surgiu o Yarn para solucionar isso tudo.

Yarn

Logomarca do gerenciador de pacote Yarn.

Criado pelo Facebook com a colaboração da Google, Exponent e Tilde, o Yarn é também open source e surgiu com o objetivo de ser mais rápido e seguro que o NPM.

Além disso, algo interessante sobre essa ferramenta é que possibilita a instalação de pacotes offline, por meio da criação de um cache em sua máquina, o que faz com que você futuramente nem precise estar com a rede conectada na internet para instalação de pacotes.

Diferenças na linha de comando

Aqui você pode perceber a semelhança entre as duas ferramentas na prática, mudando apenas uma palavra ou outra para fazer grande parte das configurações necessárias entre pacotes e dependências.

NPMYARNUtilização
npm inityarn initinicializar o gerenciador
npm install -pacote-yarn add -pacote-instalar um pacote no projeto
npm update -pacote-yarn upgrade -pacote-atualizar um pacote do projeto
npm remove -pacote-yarn remove -pacote-remover um pacote do projeto

Afinal, qual é melhor?

Por mais que o Yarn tenha surgido com o objetivo de solucionar todos os problemas encontrados com o NPM, esse último tem se atualizado cada dia mais, a ponto de sua diferença de performance e segurança com o Yarn estar cada vez menor.

Além disso, o NPM já vem instalado automaticamente com o Node.js, o que facilita muito sua utilização.

Sendo assim, ambas as tecnologias são muito utilizadas por toda comunidade JavaScript, devendo então você analisar o que é prioridade no seu projeto e quais as suas preferências.

Lembrando que (até o momento) ambos são compatíveis, o que significa que você pode, durante o desenvolvimento de um projeto, alterar entre essas duas ferramentas com as devidas configurações, se necessário.

Gostou do conteúdo e quer aprender mais sobre Javascript? Então conheça a Formação Front End e o Formação Node.js com Express e mergulhe nesses mares de front-end e back-end!

Rafaella Ballerini
Rafaella Ballerini

Desenvolvedora de software, instrutora e criadora de conteúdo. Possui um canal com mais de 240 mil pessoas inscritas, onde ensina sobre os mais diversos temas relacionados a programação e tecnologia, como HTML, CSS, Javascript, Git, Github... É instrutora front-end na plataforma da Alura e também na Imersão Dev, projeto que leva o ensino inicial de programação para todo o Brasil gratuitamente.

Veja outros artigos sobre Front-end