NPM vs Yarn: o que são, diferenças e como gerenciar
5 min5 minutos de leitura
5 min5 minutos de leitura
Sabe quando você precisa desenvolver um projeto com e reutilizar alguns códigos já prontos de pacotes e dependências, como aqueles arquivos na famosa pasta ?
Autor(a)
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.
Inscreva-se em nossa Newsletter
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
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!
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?
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.
O que é 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.
NPM
YARN
Utilização
npm init
yarn init
inicializar 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.