Começando com Yarn

Yarn é o novo dependency manager criado principalmente pelos devs do Facebook, mas com outros contribuidores de fora.

Por quê?

A moral por trás de um projeto precisa sempre ser a de solucionar algum problema. Reinventar a roda, na minha opinião, inclusive fere o paradigma da cultura Open-Source: pra que criar algo do zero, se podemos contribuir e tornar algo já existente ainda melhor? Enfim, pra quem estiver mais curioso, recomendo a leitura do artigo do pessoal do Facebook sobre o Yarn.

De uma forma geral, o cliente do npm vinha fazendo um trabalho satisfatório. Muitas pessoas têm lá suas reclamações e se depararam uns probleminhas chatos que poderiam ter sido evitados, mas convenhamos, ninguém ficou na mão. Yehuda Katz – cujo currículo daria um post a parte e é, entre outras coisas, criador do Ember.js e membro do TC-39 – menciona isso de certa forma em seu artigo recente sobre o Yarn.

Principais diferenças

  • Open-source: É isso. Enquanto o cliente do npm é uma ferramenta privada, da qual uma empresa detém total controle, o Yarn é open-source, feito e mantido pela comunidade. Só isso já pode ser motivo suficiente para alguns migrarem.

  • Registros múltiplos: O Yarn suporta os registros do Bower. Portanto, com apenas um dependency manager é possível gerenciar tanto os pacotes do npm quanto os do bower.

  • Determinístico: Yarn garante que cada vez que tu instala as tuas dependências, a árvore do diretório node_modules se mantém igual. Isso evita alguns bugs chatos e difíceis de encontrar. Sem essa de “funciona na minha máquina”!

  • Modo offline: O Yarn trabalha com um Cache Global. Basicamente, isso significa que, uma vez instalada, a dependência vai estar disponível offline pra ser usada novamente.

E não para por aí. Olhando a documentação com mais calma, vocês vão achar informações sobre Resiliência de Rede (uma vez que a requisição falha, a instalação não quebra e Yarn tenta de novo) e Performance (sim, é rápido!!)

Instalação

Yarn quebrou o processo em 3 etapas, o que torna a interface mais clara e amigável ao usuário:

  1. Resolution: Faz as requisições e encontra as dependências.
  2. Fetching: Confere se o pacote está disponível no Global Cache (modo offline). Caso não esteja, busca no repositório e os salva para que fiquem disponíveis lá.
  3. Linking: Estabelece os links com o Global Cache.

Comece a usar

Para começar é bastante simples:

npm i -g yarnpkg

Feito. Dá olhada nesse link com um guia de comandos do npm e seus equivalentes.

Bônus

Caso tudo isso que mencionei acima ainda não seja motivador suficiente pra tu migrar pro Yarn, aí vão mais dois comandos que devem dar o empurrão final.

yarn clean

Remove os arquivos desnecessários das suas dependências (esteja pronto para o susto a primeira vez que tu rodar esse!)

yarn why <package>

Identifica o porquê deste pacote ter sido instalado, se é subdependência de algum outro ou se é uma dependência direta do projeto.

Conclusão

Decidi começar com o Yarn devagar, mas a interface é tão mais amigável e a performance é tão boa que eu me senti compelido a migrar completamente. Aliás, se o Facebook já pode usar em produção, por que eu não?! Hehe. E você? Já experimentou? Deixa aí nos comentários a tua experiência.


BrazilJS é uma iniciativa NASC