Yarn — prvé dojmy a predpoveď budúcnosti

Facebook vyrobil Yarn — nástroj ktorý má nahradiť NPM. Čo si o tom myslím? TL;DR: Yarn je skvelý, ale čoskoro bude irelevantný. A NPM tiež.

Čo je Yarn?

Yarn robí prakticky to isté, čo NPM. Je to manager závislostí. Akurát má pár featur navyše. Tie podstatné sú:

  • Postará sa o to, aby všetci mali nainštalované tie isté verzie balíčkov v tej istej forme. V podstate natívne podporuje Shrinkwrap. Ak používate Shrinkwrap alebo sa bojíte ďalšej aféry typu LeftPad, Yarn je jednoduché riešenie.
  • Podporuje offline mód. Takže ak ste už nejaký balíček v danej verzii nainštalovali, už ho nemusíte znova sťahovať. Do nového projektu ho môžete jednoducho pridať aj keď nemáte pripojenie. Ideálne pre digitálnych nomádov čo sedia v kaviarni s blbým pripojením.
  • Je rýchly. A to z dvoch dôvodov: Jednak nemá problém s pomalým prekresľovaním progress baru (ktorý už bol v novom NPM fixnutý). Ale hlavne na rozdiel od NPM balíčky neinštaluje “waterfall” štýlom, ale paralelne. U veľkého projektu s hromadou závislostí je tá rýchlosť fakt znateľná.
  • Jedna nenápadná výhoda, o ktorej sa zatiaľ veľmi nehovorí, je že Yarn sa zároveň postará o závislosti nielen z NPM ale aj z Boweru. Ak ešte stále používate Bower, môže vám to podstatne zjednodušiť workflow.

Má zmysel Yarn používať?

Jasné!

Pokiaľ vás trápi ktorýkoľvek z vyššie zmienených bodov, môžete prejsť na Yarn hneď teraz. Zatiaľ je takmer jedna-k-jednej kompatibilný s NPM. Stačí Yarn nainštalovať, napísať yarn a hotovo.

Každopádne ak máte hromadu nejakých menších balíčkov a nemáte nejaký seriózny dôvod migrovať, tak je to zbytočné. NPM nikam nejde a ešte veľmi dlho tu s nami bude.

Jediný problém, na ktorý som zatiaľ narazil, boli závislosti na balíčkoch linkovaných priamo z privátnych repozitárov v GITe. Ale to sa dá ohackovať.

Trochu histórie

Skôr než vám prezradím svoju prognózu budúcnosti Yarnu, poďme sa vrátiť kúsok do histórie.

Pamätáte na Grunt? Buildovací systém, ktorý kedysi používali úplne všetci. Lenže po nejakej dobe sa niektorí vývojári začali ošívať, že Grunt potrebuje spústu configov a hlavne je pomalý.

Tak vznikol Gulp. Nová šťuka v rybníku. Oproti zle nakonfigurovanému Gruntu bol ohromne rýchly a okázale to dával najavo — ku každej akcii v konzole vypisoval, koľko mikrosekúnd daný task trval. Marketing to bol dokonalý. Všetci básnili o tom, aký je Gulp rýchly, pričom v skutočnosti tá rýchlosť bola iba vedľajší produkt skutočnej inovácie — streamingu.

Všetci predpovedali, že Grunt zanikne a všetci budú používať iba Gulp, na večné veky a nikdy inak. Lenže čo sa stalo? Keď už sa v tej problematike vývojári vŕtali, tak rovno prešli na natívne NPM skripty.

Grunt aj Gulp ešte síce existujú, ale buildovacie nástroje už nikoho nezaujímajú. Ten problém je vyriešený, teraz sa rieši niečo iné — transpilácia a management balíčkov.

Späť do budúcnosti

Myslím, že história sa bude opakovať.

Len sa pozrite, ako okato sa Yarn chváli svojou rýchlosťou. A to dokonca aj u taskov, ktoré čakajú na užívateľovu interakciu. Úplne rovnaký marketingový trik, aký používal Gulp. A úplne rovnako teraz všetci zmieňujú rýchlosť Yarnu, pričom tá kľúčová featura je version locking (shrinkwrap).

A tak ako kedysi, keď už sa táto problematika otvorila a vývojári sa ňou začnú zaoberať, myslím že vznikne úplne nové riešenie, ktoré z managementu balíčkov urobí irelevantný problém.

Môj osobný tip je, že vznikne niečo, čo:

  • zanalyzuje zdrojáky, nájde si všetky import a require položky
  • inteligentne dohľadá všetky linkované balíčky
  • pretranspiluje čo treba, pričom si to na základe typu obsahu balíčkov samo dohľadá loadery
  • zatrasie stromom a odstráni mŕtvy kód
  • preženie výsledok testmi
  • uloží validný výsledok na výstup

Takže sa jedným krokom zbavíme nielen managementu balíčkov, ale aj Webpacku, Babelu, Rollupu a čo ja viem čoho ešte. Teda vlastne nie, nezbavíme sa ich. Len ich schováme niekam na pozadie a pokiaľ sa nám nebude chcieť, vôbec sa v nich nebudeme musieť hrabať.

Príjemným vedľajším efektom bude, že sa zbavíme takýchto kvázi vtipných článkov.

Už sa neviem dočkať.

Čo vy?

Skúsili ste už Yarn? Použijete ho vo svojich projektoch? Čo si o ňom a jeho budúcnosti myslíte?

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.