Yarn it all!

Yarn prináša vylepšenie rýchlosti a semver deterministické inštalácie pri zachovaní kompatibility s packagmi z npm registra

2017-05-21
node

npm

Update 170605: Článok bol písaný pre npm v4.X., v5.0.0 dorovnáva náskok yarnu hneď v niekoľkých oblastiach

npm package manager sa už krátko po svojom vzniku stal štandardom v manažovaní dependencií front-end projektov. A možno aj akýchkoľvek projektov, mnoho development softwaru vie ťahať informácie o projekte z npm package.json. A ako vravievam, jeden package.json v roote projektu nie je nikdy na škodu.

Osobne sa snažím z npm dostať čo najviac, bez inštalácie balíkov ktoré zastupujú jeho zabudovanú funkcionalitu – na fronte používam package priamo z node_modules namiesto Bowera a píšem CLI príkazy ako npm run * scripty namiesto Gruntu a Gulpu.

Pretože je JSON univerzálny a nezávislý key:value formát, verím že z hľadiska udžateľnosti bude v budúcnosti pomerne jednoduché importovať info a commandy k projektu do nového workflovu, ktorý sa môže objaviť a prevziať miesto npm. Namiesto pálenia harddiskov na námestiach.

Preto som spozornel keď sa na githube začali objavovať commity s komentármi ako „moving from npm to Yarn“ alebo „Yarn it all!“. Skúsme sa teda pozrieť akú úlohu zohráva yarn v npm ekosystéme, alebo či sa snaží nahradiť defaultný package manager.

Ukážka prechodu na yarn z githubu

yarn

Yarn je rewrite npm, za ktorým stoja inžinieri z facebooku a viacerí poprední developeri. Zostáva plne kompatibilný s existujúcimi packagmi v npm registri, prináša však nový prístup k spôsobu ich ukladania a adresuje viacero neriešených problémov a výhrad ktoré mali developeri k npm. A ako to už chodieva vo svete opensource, „If you can‘t beat them, fork them“.

1
2
3
4
5
6
7
# Príklad inštalácie packagu
# npm
npm install --save <package>
# yarn
yarn add <package>

K popularite Yarnu prispelo najmä zvýšenie rýchlosti vďaka efektívnejšej paralelnosti procesov, možnosť inštalácie z offline cache, manažovanie typov licencií a dôkladnejšie checksumy integrity podpisov. Pre zlepšenie stability je každá inštalácia deterministicky zaznamenaná v lock súbore yarn.lock, s checksumom presnej verzie inštalovaného packagu.

Pre väčšie projekty s množstvom dependencií alebo sharované vo väčšom tíme developerov bude prechod na yarn určite prínosom. Kým však budú na githube inštalačné inštrukcie písané pre npm, bude pre pohodlných developerov malých projektov jednoduchšie kopírovať npm install príkaz obsahujúci package name.

Uvidíme čo prinesie daľší vývoj yarn a ako zareaguje npm, môžno nakoniec príde k zlúčeniu ako v prípade node.js a io.js (jj, to bola voľakedy epizóda opensource príbehu).

Za spomenutie určite stojí aj pnpm, vďaka hard- a symlinkovaniu rýchlosťou prekonávajúci npm aj yarn. Projekt za sebou však zatiaľ nemá tak veľkú komunitu ani vplyvnú spoločnosť na to aby bola zaručená stabilita a funkčnosť linkovania dependencií.


Komentáre: