Yarn: Um novo gerenciador de dependências para JavaScript \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 20 Horas 

 58 Min 

 25 Seg 

   Tempo restante da oferta: 20 58 25 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Yarn: Um novo gerenciador de dependências para JavaScript  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

# Yarn: Um novo gerenciador de dependências para JavaScript

 Yarn nasceu para ser uma opção rápida e segura de se gerenciar dependências em JavaScript.

 [ Redação Treinaweb ](https://www.treinaweb.com.br/blog/autor/redacao-treinaweb) 10 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2016/10/yarn-um-novo-gerenciador-de-dependencias-para-javascript.jpg)  

Trabalhar com **JavaScript** hoje em dia sem utilizar um *gerenciador de dependências* (ou *gerenciador de pacotes*, se preferir) é quase impensável, apesar de possível.

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/10/E-BOOK-GRATUITO-COMECANDO-JS.png) ](https://www.treinaweb.com.br/ebook/guia-javascript)

A maioria das principais linguagens do mercado possuem algum gerenciador de dependências, vamos a alguns exemplos:

- PHP tem o **Composer** (https://getcomposer.org/)
- Ruby tem o **RubyGems** (https://rubygems.org/)
- C# (e todo o ecosistema .NET) tem o **Nuget** (https://www.nuget.org/)
- Java tem o **Maven** que, dentre várias coisas, também consegue desempenhar essa função. (https://maven.apache.org/)

E assim por diante. Agora, como fica o **JavaScript**? Bom, não fica pra trás, garanto! O principal e mais utilizado gerenciador de dependências do momento para JavaScript é o **NPM** (*Node Package Manager*).

> Comparação entre os principais gerenciadores de dependência para front-end (não focando só em JavaScript): https://github.com/wilmoore/frontend-packagers

O **NPM** cresceu de forma exponencial nos últimos anos e, por mais que a sua equipe de arquitetura tenha colocado os seus melhores esforços em cima de atualizações e melhorias, a maior reclamação dos desenvolvedores é de que ele é extremamente lento e possui alguns problemas para gerenciar as requisições na rede.

Se você gerencia uma ou outra dependência talvez não sinta tanto, agora, desenvolvedores de aplicações SPA como os que utilizam **Ember.js** com **Ember-CLI** ou **AngularJS**, **React** etc, certamente lidam com esse gargalho da falta de performance diariamente.

Visando resolver esse e outros problemas surgiu o **Yarn**, o mais novo gerenciador de dependências para JavaScript.

O Yarn foi anunciado hoje!

[  ![React Native - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/react-native.svg)   Curso React Native - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/react-native-fundamentos)

#### Yarn

![Yarn](https://d2m498l008ebpa.cloudfront.net/2016/Oct/feature_secure-1476220749234.png)

Ele foi desenvolvido e está sendo mantido por um grupo de desenvolvedores do **Babel JS**, **Facebook**, **Ember.js** entre outros. O **Yarn** não veio para substituir o **NPM**. De forma alguma. Veio pra coexistir. Ser mais uma opção.

A melhor parte: **Yarn** é totalmente compatível com os registros do **NPM**. Sim, isso quer dizer que, se você já tem um grande projeto e usa NPM, tudo bem, você pode começar agora mesmo a utilizar o Yarn em substituição sem precisar alterar o seu `package.json`, por exemplo.

Dentre as principais *features* do **Yarn**, destacamos:

- Se você já instalou um pacote anteriormente, isso fica cacheado e você poderá instalá-lo posteriormente mesmo sem conexão à internet.
- As dependências serão instaladas da mesma forma e ordem em qualquer máquina.
- Se uma requisição falhar, ela não fará com que toda a instalação falhe. Ela é refeita.
- A rede é utilizada de forma inteligente, as requisições são enfileiradas para se obter a melhor performance possível.

Quer saber mais? Veja aqui o post de apresentação da ferramenta feito pelo pessoal do **Facebook**:

https://code.facebook.com/posts/1840075619545360

#### Instalando e utilizando o Yarn

Se você já tem o NPM instalado globalmente no seu ambiente, tudo o que você precisa fazer é executar:

```javascript
npm install -g yarnpkg

```

Para instalar as dependências do `package.json` de um projeto, tudo o que você precisa fazer é executar:

```javascript
yarn

```

Esse comando é equivalente ao `npm install`. Isso é tudo! Certamente você notará uma grande diferença.

Nós, aqui do TreinaWeb, tivemos uma melhora de performance de ao menos *500%* na instalação das dependências de um projeto nosso.

###### yarn.lock

Uma das razões para a alta performance (além da eficiência no uso dos recursos da rede) é o fato de que o Yarn gera um `lock file` muito decente após a instalação (`yarn.lock`) que registra todas as dependências instaladas no projeto e suas exatas versões, de tal forma que, se a pasta `node_modules` for removida, tendo o arquivo `yarn.lock` disponível, ao executar `yarn` (para instalar as dependências) ele não vai precisar ler o `package.json` novamente e montar toda uma árvore das dependências, pois isso já está devidamente detalhado no `yarn.lock`.

Se você trabalha com PHP vai notar a semelhança. O Composer (principal gerenciador de dependências para PHP) gera um arquivo `composer.lock` nas instalações.

---

**Update: 12/10/2016**

O repositório do `Yarn` passou de poucas estrelas no Github para quase *10k* em menos de 1 dia:

https://github.com/yarnpkg/yarn

Muita gente já está usando e comemorando. *Taylor Otwell* criador do **Laravel** postou entusiasmado:

> Finally I can stop getting e-mails about people's 20 minute "npm install" processes timing out! ?
> 
> — Taylor Otwell (@taylorotwell) [October 11, 2016](https://twitter.com/taylorotwell/status/785889476593668096)

-------- 

#### Qual usar?

Bom, diante das excelentes opções que temos (NPM, Yarn etc), cabe a você, desenvolvedor, ver o que melhor se encaixa nas suas necessidades.

Até a próxima!

[  ![BDD - Testes Guiados por Comportamento com Behat PHP](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/behat.svg)   Curso BDD - Testes Guiados por Comportamento com Behat PHP Conhecer o curso ](https://www.treinaweb.com.br/curso/bdd-testes-guiados-por-comportamento-com-behat-php)

- [ #JavaScript ](https://www.treinaweb.com.br/blog/tag/javascript)

Autor

 ![Redação Treinaweb](//secure.gravatar.com/avatar/662942287935c97e547cfc12c04be6e5?d=mm)

## Redação Treinaweb

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/redacao-treinaweb)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/07/CRIANDO-PRIMEIRO-CRUD-COM-NESTJS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Criando o primeiro CRUD com NestJS ](https://www.treinaweb.com.br/blog/criando-o-primeiro-crud-com-nestjs) 

     Neste artigo veremos como criar um CRUD com NestJS, o passo a passo utilizando ferramentas como o TypeORM e o banco de dados SQLite.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/03155235/GERENCIADOR-DEPENDÊNCIAS-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     7 anos atrás

    ##  [ O que é gerenciador de dependências? ](https://www.treinaweb.com.br/blog/o-que-e-gerenciador-de-dependencias) 

     Uma ferramenta que facilita a vida do desenvolvedor e o auxilia no gerenciamentos das bibliotecas utilizadas no projeto que estiver trabalhando.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/TWELVE-FACTOR-APP-400x280.png)  [ Engenharia de Software ](https://www.treinaweb.com.br/blog/categoria/engenharia-de-software) 

     6 anos atrás

    ##  [ O que são os 12 Factor App? - Parte 1 ](https://www.treinaweb.com.br/blog/o-que-sao-os-12-factor-app-parte-1) 

     Se você trabalha desenvolvendo aplicativos que funcionam como um serviço, conheça os 12 (Twelve) Factor App, uma metodologia que te ajudará a criar aplicações melhores.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/javascript-comandos-do-console-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     6 anos atrás

    ##  [ JavaScript - Comandos do Console ](https://www.treinaweb.com.br/blog/javascript-comandos-do-console) 

     Conheça os comandos do console do navegador e domine essa ferramenta para melhorar seus testes ou caça aos bugs do seu JavaScript!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/03/13164211/JAVASCRIPT-COISAS-ESTRANHAS-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     7 anos atrás

    ##  [ JavaScript - Entendendo as partes estranhas ](https://www.treinaweb.com.br/blog/javascript-entendendo-as-partes-estranhas) 

     Conheça o motivo por trás de vários comportamentos considerados estranhos que o JavaScript possui.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/01/03075049/Ordenação-de-Cores-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     7 anos atrás

    ##  [ JavaScript - Ordenando Elementos por Cores ](https://www.treinaweb.com.br/blog/javascript-ordenando-elementos-por-cores) 

     Aprenda a ordenar cores e fazer conversões entre os formatos RGB, Hexadecimal e HSL usando JavaScript.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/27155937/js-symbol-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     8 anos atrás

    ##  [ JavaScript: você sabe o que são e por que usar Symbols? ](https://www.treinaweb.com.br/blog/javascript-voce-sabe-o-que-sao-e-por-que-usar-symbols) 

     Descubra a utilidade dos Symbols no JavaScript, novo tipo primitivo introduzido no ES2015.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/07/31131011/funções-js-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     8 anos atrás

    ##  [ JavaScript: métodos de Arrays que você precisa conhecer ](https://www.treinaweb.com.br/blog/javascript-metodos-de-arrays-que-voce-precisa-conhecer) 

     Trabalha com JavaScript? Então você precisa conhecer estes métodos para trabalhar com Arrays.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/02/06152024/js-engine-400x280.png)  [ Desenvolvimento de Jogos ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-de-jogos) 

     9 anos atrás

    ##  [ JavaScript Game Engines ](https://www.treinaweb.com.br/blog/javascript-game-engines) 

     Conheça as principais Game Engines para JavaScript.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/06/javascript-generators-e-onde-usa-los-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     10 anos atrás

    ##  [ JavaScript Generators e onde usá-los ](https://www.treinaweb.com.br/blog/javascript-generators-e-onde-usa-los) 

     Veja como e onde podemos aproveitar os Generators no JavaScript para melhorar o nosso código.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/javascript_generators-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     10 anos atrás

    ##  [ JavaScript Assíncrono com Generators ](https://www.treinaweb.com.br/blog/javascript-assincrono-com-generators) 

     Generators são uma funcionalidade que veio no ES2015 para nos auxiliar no desenvolvimento de código assíncrono.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/08/javascript-comandos-do-console-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     5 anos atrás

    ##  [ Trabalhando com data no JavaScript ](https://www.treinaweb.com.br/blog/trabalhando-com-data-no-javascript) 

     Neste artigo veremos como manipular datas no JavaScript, utilizando a classe Date, como pegar a data atual e utilizar os métodos da classe.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **20h 58min 25s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
