Npm e Yarn são responsáveis pelo gerenciamento de pacotes, sendo o Npm o gerenciador padrão do Node.js, enquanto o Yarn foi criado pelo Facebook.
É comum utilizarmos pacotes de dependência nos nossos projetos, como o famoso node_modules. Portanto, com um desses recursos podemos instalar um novo pacote, atualizar a versão, entre outras ações.
No geral, ambos possuem a mesma função, porém a forma de execução é diferente, deixando a comunidade de DEVs polarizada.
Por que criaram o Yarn?
O Yarn foi criado a partir de uma insatisfação com o Npm, pois ele apresentava alguns contratempos, dentre eles a demora em realizar alguma instalação ou atualização de segurança.
Problemas esses que os criadores estão tentando resolver a cada nova versão do Npm. Com base nisso, o Facebook (Meta), juntamente com o Google e outras empresas, desenvolveram o Yarn para ser rápido, seguro e eficiente.
Qual a diferença?
A pessoa que utiliza Npm instala as dependências do node_modules fora de ordem. Isso significa que a estrutura de um diretório pode ser diferente de uma pessoa para outra. Assim, essa diferença pode causar a famosa frase “na minha máquina funciona”.
Com o Yarn, você estará recebendo o mesmo conteúdo da máquina de desenvolvimento, uma vez que ele bloqueia as dependências instaladas em versões específicas.
Esse problema foi resolvido em versões Npm superiores a 5 com a introdução do package-lock.json (caso você utilize uma versão anterior, isso ainda será um problema).
O Yarn pode paralelizar, isso significa que faz a instalação apenas uma vez, resultando em um processo de instalação dos pacotes mais rápido, pois possui um cacheamento global de cada pacote instalado e, assim que você precisar instalar novamente, o Yarn irá buscar nesse cache, mudando apenas a versão.
Nesse quesito, o Npm ainda não fez nenhuma atualização relevante a ponto de fazer instalações dos pacotes rapidamente.
O Npm vem instalado juntamente com o Node.js, facilitando a utilização e evitando instalações externas. Enquanto você precisaria instalar o Yarn para então utilizá-lo em seu projeto.
Comandos Npm vs Yarn
Funcionalidades | Comando Npm | Comando Yarn |
Inicializar o gerador | npm init | yarn init |
Instalar todos os pacotes existentes em um projeto | npm install ou npm i | yarn add ouyarn |
Instalar um pacote específico | npm install nomeDoPacote | yarn add nomeDoPacote |
Atualizar um pacote específico | npm update nomeDoPacote | yarn update nomeDoPacote |
Remover um pacote específico | npm remove nomeDoPacote | yarn remove nomeDoPacote |
Conclusão
É fato que o Yarn possui diversas vantagens e a mais disseminada é a sua velocidade na instalação dos pacotes, porém o Npm vem reduzindo essas diferenças a cada atualização.
Existe um grande debate sobre qual é o melhor. Desse modo, há fortes defensores do Npm bem como do Yarn. Depende de você analisar e escolher o que melhor satisfaça as suas necessidades. Lembrando que é possível utilizar ambos em um projeto.
Qual deles você prefere? Aproveite para visitar outros conteúdos do blog, como o artigo que traz dicas de como dominar o Git.
Não se esqueça de se inscrever na Coodesh e conhecer nossas soluções em code assessment.