NPM vs Yarn
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!
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
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
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.
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!