Kako instalirati i koristiti Yarn za moderne JavaScript projekte

Posljednje ažuriranje: 04/24/2026
  • Yarn koristi dvonivoski model: jedan globalni CLI plus verziju vezanu za projekat za konzistentno ponašanje.
  • Determinističke instalacije s yarn.lock-om i agresivnim keširanjem pružaju brzo i reproducibilno upravljanje ovisnostima.
  • Modern Yarn Berry dodaje PnP, radne prostore i .yarnrc.yml za fleksibilno povezivanje, keširanje i integraciju editora/CI.
  • Ispravno podešavanje PATH-a, rukovanje lockfile-ovima i upravljanje keš memorijom su neophodni za izbjegavanje uobičajenih problema s instalacijom.

Instalirajte Yarn JavaScript

Ako pokušavate instalirati Yarn za svoje JavaScript projekte i osjećate se pomalo izgubljeno među toliko opcija, niste sami. Yarn se mnogo razvio posljednjih godina, koegzistira s npm-om, a postoje različite verzije i tokovi instalacije ovisno o operativnom sistemu, pa čak i stilu projekta koji koristite (monorepo, PnP, classic node_modules i tako dalje).

Dobra vijest je da kada shvatite kako se Yarn instalira i kako funkcioniše njegov dvonivoski model (globalni CLI + Yarn specifičan za projekat), sve počinje imati smisla. U ovom vodiču ćemo detaljno objasniti kako instalirati Yarn na najčešće sisteme, kako ga povezati sa stvarnim JavaScript projektom, po čemu se razlikuje od npm-a i kako riješiti tipične probleme koji se obično pojavljuju prvi put kada ga usvojite.

Šta je Yarn i zašto je i dalje važan za JavaScript projekte

Yarn je upravitelj paketa za Node.js dizajniran s tri glavna cilja na umu: brzina, sigurnost i determinističke instalacije. Nastao je kao alternativa npm-u u vrijeme kada je npm imao problema s performansama i pouzdanošću, i iako se npm od tada mnogo poboljšao, Yarn ostaje izuzetno popularan, posebno oko Reacta i modernih frontend stekova.

Jedna od ključnih prednosti Yarn-a je njegov deterministički proces instalacije, zasnovan na yarn.lock fajl. Ova datoteka ispravlja tačne verzije svih direktnih i tranzitivnih zavisnosti, tako da instaliranje na različite mašine ili CI servere uvijek daje isto stablo zavisnosti, eliminišući klasični problem "radi samo na mom laptopu".

Još jedna karakteristična karakteristika je agresivno ponašanje keširanja, koje omogućava Yarn-u da ponovo koristi bilo koji paket koji je već preuzet. Zahvaljujući tome, ponovljene instalacije su dramatično brže, a Yarn može raditi čak i u offline režimu ako su svi potrebni paketi prethodno keširani.

Modern Yarn (često nazivan "Berry" za verzije 2.x, 3.x i 4.x) donosi dodatne napredne mogućnosti kao što su Plug'n'Play (PnP) i radni prostori. PnP može potpuno ukloniti tradicionalno node_modules folder zamjenjujući ga manifest datotekama koje Node.js-u tačno govore gdje se svaki paket nalazi, štedeći mnogo prostora na disku i ubrzavajući neke operacije. Radni prostori, s druge strane, savršeni su za monorepozitorije, povezujući više paketa u jednom repozitoriju sa zajedničkim lockfile-om i centralnim upravljanjem zavisnostima.

Sa sigurnosne perspektive, Yarn provjerava kontrolne sume za svaki paket prije njegovog izvršenja. Ova validacija integriteta dodaje dodatni sloj zaštite od oštećenih ili neovlašteno izmijenjenih artefakata, što je posebno korisno u korporativnim ili osjetljivim okruženjima.

Razumijevanje pređe Yarn Classic u odnosu na Yarn Berry (modernu pređu)

Pređa Classic and Berry

Prije nego što govorimo o instalaciji, ključno je razumjeti da postoje dvije velike porodice pređe: Classic (1.x) i Berry (2.x/3.x/4.x). Yarn Classic se nalazi u vlastitom historijskom repozitoriju i prima samo sigurnosne ispravke, dok se sav aktivni razvoj fokusira na noviju Berry liniju koja se nalazi u yarnpkg/berry odmor.

Pređa Yarn Classic (oko 1.22) je ono što većina ljudi i dalje dobije prilikom instaliranja globalnog... yarn CLI sa npm-om. Taj globalni CLI danas uglavnom služi kao pokretač: unutar projekta koji je konfigurisan pomoću Berryja, globalna naredba jednostavno delegira izvršenje lokalnoj verziji Yarn-a specifičnoj za projekat, tako da možete nadograditi lanac alata projekta bez dodirivanja globalnih alata.

Yarn Berry uvodi duboke arhitektonske promjene, od kojih su najznačajnije Plug'n'Play i moćan sistem dodataka (plug-in). Po zadanim postavkama, Berry preferira PnP umjesto node_modules, podržava radne procese bez instalacije (zavisnosti posvećene repozitoriju) i omogućava preciznu konfiguraciju putem .yarnrc.yml, uključujući kako su moduli povezani, kako se upravlja keš memorijama ili kako su definirani registri i proxyji.

Sami održavatelji Yarn-a snažno preporučuju migraciju sa verzije 1.x na najnovije Berry izdanje kad god je to moguće. Moderna izdanja se aktivno održavaju duže, ispravljaju čitave klase problema prisutnih u Classic verziji i nude fleksibilnost konfiguracije putem... nodeLinker postavku tako da i dalje možete koristiti klasični node_modules raspored ili simboličke veze u pnpm stilu kada PnP nije dobar izbor.

Ako vaš ekosistem ili alati još nisu spremni za PnP, niste zaglavili. Jednostavnim postavljanjem nodeLinker: node-modules in .yarnrc.ymlBerry se ponaša bliže tradicionalnim npm instalacijama, a istovremeno zadržava svoj deterministički lockfile, ponašanje keširanja i poboljšano CLI iskustvo.

Sistemski zahtjevi i globalna strategija instalacije pređe

Bez obzira na vaš operativni sistem, pravi zahtjev za Yarn je instaliran Node.js. Yarn je CLI baziran na Nodeu i za pokretanje se oslanja na Node, tako da prvo trebate brzo potvrditi da je Node dostupan. node -v u vašem terminalu. Ako vidite broj verzije umjesto greške „komanda nije pronađena“, spremni ste.

Ako Node.js nedostaje ili je zastario, instalirajte ga ili nadogradite koristeći metodu preporučenu za vašu platformu. Na Linuxu možete koristiti distribucijske pakete ili NodeSource repozitorije, na macOS-u biste mogli preferirati Homebrew, MacPorts ili nvm, a na Windowsu službeni instaler ili upravitelj paketa poput Chocolatey ili Scoop. Mnogi Yarn tokovi rada pretpostavljaju barem Node 14.18, a za Berry, Node 16 ili 18 LTS je obično idealna opcija.

Autori Yarn-a preporučuju dvoslojni model instalacije. Prvo, instalirajte globalni yarn CLI jednom (najčešće putem npm-a), a zatim, unutar svakog projekta, koristiti tu globalnu naredbu za konfiguriranje verzije Yarn-a specifične za projekat koja se nalazi direktno u repozitoriju. Ovo garantuje da svi saradnici i CI poslovi izvršavaju potpuno istu verziju Yarn-a definisanu projektom.

Instaliranje globalnog Yarn CLI-ja putem npm-a je jednostavno. Budući da se npm standardno isporučuje s Node.js-om, možete pokrenuti:

sudo npm install -g yarn

Nakon što se instalacija završi, provjerite da li je globalni CLI dostupan. Run:

yarn --version

Ako vidite nešto slično 1.22.x, to jest globalni Classic launcher koji ispravno radi. Od sada, kada uđete u projekat koji koristi Berry, ova globalna komanda će transparentno predati kontrolu lokalno konfigurisanom izdanju Yarn-a pohranjenom u repozitoriju.

Instaliranje Yarn-a u određeni JavaScript projekat

Kada je globalni CLI spreman, sljedeći korak je "prikačiti" određenu verziju Yarn-a za svaki projekat. Upravo ovo osigurava konzistentnost na mašinama vaših članova tima i vašim CI/CD cjevovodima: svi koriste isti Yarn binarni fajl i stoga dijele isto ponašanje.

Započnite tako što ćete otići u direktorij vašeg projekta (ili kreirati novi ako pokrećete novu aplikaciju). Na primjer:

mkdir my-project
cd my-project

Unutar te mape koristite posebnu yarn set version naredba za odabir modernog Berry izdanja. Tipičan izbor je praćenje aktivno razvijene linije "bobica":

yarn set version berry

Iza kulisa, Yarn razrješava "berry" u najnoviju Berry binarnu datoteku, preuzima je i pohranjuje unutar .yarn/releases direktorij u vašem projektu. Istovremeno, kreira ili ažurira .yarnrc.yml datoteku u korijenu projekta kako bi se globalnom pokretaču reklo da delegira na tu lokalnu binarnu datoteku.

Ako sada trčiš yarn --version ponovo iznutra projekta, izlaz će se promijeniti u verziju zakačenu za projekat. Možda ćete vidjeti nešto slično 4.5.0 ili neko drugo 3.x/4.x izdanje, što ukazuje da više ne koristite globalni Classic CLI, već lokalni Berry koji se nalazi u vašem repozitoriju.

Od ovog trenutka, svaka Yarn naredba izvršena u tom direktoriju (ili njegovim poddirektorijumima) koristit će Yarn verziju specifičnu za projekt. Ovo omogućava timu da postepeno migrira različite projekte na novija izdanja Yarn-a vlastitim tempom, a da pritom i dalje ima jedan globalni launcher instaliran na računarima programera.

Osnovne Yarn komande za svakodnevni razvoj

Nakon što instalirate Yarn i povežete ga s vašim projektom, potreban vam je samo mali podskup naredbi za pokrivanje većine svakodnevnih zadataka. CLI je opsežan, ali nekoliko podnaredbi vas već vodi daleko u smislu upravljanja zavisnostima i skriptama.

Kad god se osjećate zaglavljeno ili želite istražiti više opcija, svaka naredba prihvata zastavicu za pomoć. Trčanje:

yarn --help

ispisuje opštu pomoć prilikom dodavanja --help nakon određene podkomande dobijete kontekstualne savjete za korištenje. Na primjer, yarn install --help objašnjava sve dostupne zastavice za proces instalacije zavisnosti.

Za pokretanje potpuno novog projekta, možete zatražiti od Yarn-a da generira osnovne konfiguracijske datoteke. Unutar prazne mape, jednostavno pokrenite:

yarn init

Ta naredba vas vodi kroz nekoliko promptova i ispisuje package.json plus yarn.lock fajl. Prvi deklariše metapodatke, skripte i zavisnosti vašeg projekta, dok drugi djeluje kao kanonski zapis tačnih verzija koje je Yarn riješio prilikom instalacije.

Prilikom pridruživanja postojećem repozitoriju koji već koristi Yarn, tipična početna tačka je instaliranje svih zavisnosti. Iz korijena projekta, samo pokrenite:

yarn install

Pređa zatim čita package.json i yarn.lock, preuzima sve što nedostaje i postavlja stablo zavisnosti. Zahvaljujući keširanju, naknadne instalacije, čak i na CI, bit će mnogo brže od početnog pokretanja.

Dodavanje novih zavisnosti je podjednako jednostavno kao i add podkomanda. Da biste instalirali, na primjer, Express, koristili biste:

yarn add express

Ova jedna komanda dohvaća paket, ažurira ga package.json i osvježava yarn.lock. Nema potrebe za ručnim uređivanjem JSON datoteka; Yarn održava deklarirane raspone i zaključane verzije sinhroniziranim za vas.

Brza provjera ispravnosti: Mali Express Server sa Pređom

Ako želite biti apsolutno sigurni da Yarn radi kako je predviđeno, možete napisati mali smoke test koristeći Express. Pod pretpostavkom da ste unutar projekta i da ste ga već pokrenuli yarn add express, kreirajte datoteku pod nazivom index.js sa sljedećim minimalnim serverom:

const express = require("express");
const app = express();

app.get("/", (req, res) => res.send("Yarn is working!"));

app.listen(3000, () => console.log("Server running on http://localhost:3000"));

Umjesto direktnog pozivanja Node-a, ovaj skript možete pokrenuti putem Yarn-a, što može biti zgodno u PnP okruženjima. Koristite:

yarn node index.js

Otvorite drugi terminal i provjerite da li server ispravno odgovara. Jednostavno:

curl http://localhost:3000

treba da vrati poruku „Pređa radi!“. Ako se to dogodi, znate da je Yarn riješio zavisnost, povezao rezoluciju modula i izvršio skriptu bez problema.

Upravljanje zavisnostima, skriptama i Yarn kešom

Pored instalacije i osnovnih dodataka, Yarn nudi nekoliko uslužnih programa za održavanje i uredno razvijanje vašeg grafa zavisnosti. Ove naredbe izbjegavaju ručno uređivanje i zadržavaju package.json i yarn.lock dosljedan u svakom trenutku.

Da biste uklonili zavisnost koja vam više nije potrebna, koristite remove podkomanda. Na primjer:

yarn remove package-name

Yarn će deinstalirati paket, izbaciti ga iz package.json, i ažurirajte datoteku zaključavanja u skladu s tim. Ovo sprečava da zastarjeli ili nekorišteni moduli ostanu u vašem stablu zavisnosti.

Nadogradnja zavisnosti može se izvršiti masovno ili za određeni paket. Bez rasprave,

yarn upgrade

razrješava kompatibilne novije verzije prema vašim deklariranim rasponima, dok:

yarn upgrade package-name

cilja na jednu zavisnost. U oba slučaja, Yarn prepisuje yarn.lock kako bi se odrazio ažurirani graf zavisnosti.

Kada vaš projekat definiše skripte u package.json, Pređa run Podkomanda je način da se izvrše. Skripta poput:

"scripts": {
  "start": "node index.js"
}

može se pokrenuti sa:

yarn run start

a u mnogim slučajevima i kraće yarn start Alias ​​takođe funkcioniše. Ovo pruža čisti sloj apstrakcije preko Node-a ili drugih alata, bez obzira na vašu osnovnu strategiju povezivanja modula.

Yarn čuva lokalni ili globalni keš svih prethodno preuzetih paketa kako bi ubrzao instalacije i omogućio ponašanje van mreže. Ponekad, posebno nakon eksperimenata ili višestrukih promjena verzija, ta keš memorija može postati neispravna ili oštećena. Kad god posumnjate na probleme s keš memorijom, možete je resetirati pomoću:

yarn cache clean

Ako vas zanima gdje Yarn pohranjuje te keširane artefakte, yarn cache dir ispisuje lokaciju. Ovo je posebno korisno kada trebate staviti mapu predmemorije u bijelu listu antivirusnog programa na Windowsu kako biste izbjegli spore instalacije uzrokovane agresivnim skeniranjem svake preuzete datoteke.

Konfigurisanje Yarn-a pomoću .yarnrc.yml datoteke

Modern Yarn centralizuje konfiguraciju projekta u .yarnrc.yml fajl. Ovaj YAML dokument kontroliše kako su zavisnosti povezane, gdje se nalaze keš memorije, koliko strog treba biti PnP, URL-ove registra, telemetriju i još mnogo toga.

Tipična konfiguracija bi mogla izgledati ovako:

nodeLinker: pnp
pnpMode: strict
compressionLevel: mixed
enableGlobalCache: true
enableTelemetry: false

The nodeLinker Postavka je posebno važna jer definira kako se moduli rješavaju. Važeće opcije uključuju pnp (Plug'n'Play bez node_modules folder), node-modules (klasični raspored), a ponekad i linker u pnpm stilu. Ako naiđete na probleme kompatibilnosti s alatima koji su fiksno kodirani node_modules pretpostavke, prelazak na node-modules često ih rješava.

compressionLevel govori Yarn-u koliko agresivno treba komprimirati keširane pakete. Vrijednost od 0 potpuno onemogućava kompresiju za maksimalnu brzinu, 1 prisiljava potpunu kompresiju za minimalno korištenje diska i mixed balansira oba svijeta, što je obično razumna zadana vrijednost za većinu timova.

Omogućiti enableGlobalCache uzrokuje da Yarn ponovo koristi dijeljeni direktorij predmemorije na više projekata. Na taj način, ako nekoliko repozitorija zavisi od istih biblioteka, Yarn izbjegava njihovo višestruko preuzimanje, štedeći i mrežni propusni opseg i prostor na disku.

Na kraju, enableTelemetry kontroliše da li Yarn šalje anonimne informacije o korištenju nazad održavateljima. Mnoge kompanije preferiraju isključivanje ove opcije iz razloga privatnosti i usklađenosti, dok je druge ostavljaju uključenom kako bi pomogle u vođenju plana projekta; u svakom slučaju, to je samo zastavica u ovoj konfiguracijskoj datoteci.

Git integracija: Šta commitovati, a šta ignorisati

Budući da Yarn pohranjuje dio svoje mehanizacije unutar .yarn direktorij, važno je biti promišljen o tome šta ulazi u kontrolu verzija. Neke od tih datoteka bi apsolutno trebalo pratiti, dok su druge artefakti predmemorije ili izgradnje koji bi samo preopteretili repozitorij.

Minimalno .gitignore Strategija koja se koristi u mnogim Berry projektima izgleda ovako:

.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
.pnp.*

Ovaj obrazac ignoriše cijeli .yarn folder, ali zatim stavlja na bijelu listu poddirektorije koje je potrebno potvrditi (commit). The releases Na primjer, direktorij sadrži Yarn binarni fajl specifičan za projekat; bez njega, drugi programeri možda neće dobiti potpuno istu CLI verziju prilikom kloniranja repozitorija.

Druge putanje na bijeloj listi, kao što su .yarn/plugins or .yarn/sdks sadrže prilagođene dodatke i integracije s uređivačima. Držanje pod kontrolom verzija osigurava da svi u timu dijele isti set dodataka i podršku za jezičke alate.

The .pnp.* Unosi su Plug'n'Play datoteke manifesta koje opisuju stablo zavisnosti ako koristite PnP način rada. Njihovo potvrđivanje je ključno za reproducibilne, a ponekad čak i zero-install tokove rada, gdje CI ili novi klonovi mogu odmah pokrenuti projekat bez potrebe za regeneriranjem manifesta.

Uz sve ovo, zapamtite da yarn.lock je građanin prvog reda u vašem repozitoriju. Mora se uvijek potvrđivati ​​(commit) i ažurirati zajedno s promjenama zavisnosti, u suprotnom sve prednosti determinizma koje nudi Yarn nestaju.

Pređa vs. npm: Kada pređa zaista sija

Yarn i npm rješavaju isti osnovni problem: upravljanje Node.js zavisnostima, ali se Yarn razlikuje u nekoliko praktičnih scenarija. Najvidljivija razlika je često performansa: kroz paralelne instalacije i pametnije keširanje, Yarn često znatno brže završava instalacije na velikim projektima.

Korištenje diska je još jedna jaka strana, posebno ako prihvatite PnP. Eliminacijom node_modules, tipičan projekat može potrošiti znatno manje prostora na disku, a alati koji se dobro integrišu sa PnP-om mogu imati koristi od bržeg rješavanja modula jer Node više ne mora da prolazi kroz duboka i repetitivna stabla direktorijuma.

Što se tiče ponašanja lockfile-a, Yarn-ov yarn.lock je široko cijenjen zbog svoje kompaktnosti i visoke determinističnosti. Eksplicitno bilježi odluke o rezoluciji, što olakšava razumijevanje zašto je određena verzija odabrana i otklanjanje grešaka u konfliktima verzija.

Monorepozitorije su područje gdje je Yarn odavno ispred zahvaljujući svojoj funkciji radnih prostora. S radnim prostorima, više paketa u jednom repozitorijumu dijeli lockfile, zavisnosti se efikasno pokreću, a lokalni paketi se automatski povezuju bez konfiguracijskog predloška.

Slučajevi upotrebe u stvarnom svijetu gdje se Yarn jasno ističe često uključuju složena CI/CD podešavanja, velike dijeljene kodne baze ili okruženja iza korporativnih proxyja i prilagođenih certifikata. Na primjer, trčanje yarn install --immutable unutar CI-a osigurava da instalacija neće uspjeti ako yarn.lock datoteka se ne podudara package.json, koji hvata nekonzistentna stanja zavisnosti prije nego što stignu do produkcije.

S druge strane, npm je i dalje savršeno valjan izbor za manje projekte ili timove duboko investirane u npm ekosistem. Ako održavate samo nekoliko servisa sa skromnim stablima zavisnosti i ne oslanjate se u velikoj mjeri na monorepozitorije ili PnP, jednostavnost korištenja npm-a može nadmašiti napredne funkcije Yarn-a.

Opcije instalacije specifične za operativni sistem

Iako npm-bazirana instalacija globalnog CLI-ja radi gotovo svugdje, Yarn također nudi distribucije i skripte specifične za operativni sistem. Ovo je korisno ako preferirate izvorne upravitelje paketa ili ako radite na sistemima bez praktične npm postavke.

Na macOS-u, vrlo popularan izbor je instaliranje Yarn-a putem Homebrew-a. Tipičan tok, pod pretpostavkom da već imate Node (moguće i putem Homebrewa), je:

brew install yarn

Ako koristite nvm ili neki drugi Node menadžer verzija, provjerite da li se direktorij shims nalazi prije bilo kojeg Homebrew Node-a u vašoj putanji (PATH). U suprotnom, možete završiti koristeći drugačiju verziju Node-a od očekivane prilikom pokretanja Yarn skripti.

Druga opcija na macOS-u je MacPorts, koji može instalirati i Node.js i Yarn ako još nisu prisutni. Za još veću kontrolu, Yarn također objavljuje instalacijsku shell skriptu koja radi na macOS-u i generičkom Unixu; ubacivanjem te skripte u vašu shell ljusku, Yarn se preuzima i postavlja odjednom.

Na Windowsu, preporučene putanje su MSI instalacijski program, Chocolatey ili Scoop. MSI instalacijski program vas vodi kroz grafički čarobnjak i obično osigurava da je Node.js prisutan kao dio procesa. S druge strane, Scoop vam omogućava da instalirate Yarn iz komandne linije, opcionalno predlažući Node ako nedostaje.

Prilikom instaliranja Yarn-a na Windows, veoma je dobra ideja da stavite na bijelu listu i mapu projekta i direktorij predmemorije Yarn-a, obično pod %LocalAppData%\Yarn, u vašem antivirusu. U suprotnom, svako preuzimanje i pisanje datoteke može biti skenirano, što dramatično usporava vaše instalacije.

Linux distribucije često nude više opcija: službene sistemske pakete, Yarn-ove vlastite repozitorije ili ručne instalacije tarballa. Na primjer, na Debianu i Ubuntuu možete dodati Yarn-ov APT repozitorij, opcionalno konfigurirati NodeSource da dobije nedavnu Node.js verziju, a zatim instalirati Yarn putem... apt.

Na distribucijama poput CentOS-a, Fedore, RHEL-a ili Archa, Yarn nudi GPG-potpisane tarball datoteke koje možete preuzeti i raspakirati bilo gdje na disku. U tim ručnim postavkama, obično trebate provjeriti potpis tarballa pomoću GPG-a, a zatim dodati raspakirani Yarn direktorij u svoj PATH tako da yarn Komanda je dostupna na nivou cijelog sistema.

Konfiguracija PATH-a na Unixu, Linuxu i Windowsu

Uobičajeni izvor zabune tokom instalacije je PATH konfiguracija: Yarn je možda instaliran, ali shell ne može pronaći binarnu datoteku. U tom slučaju, morate ažurirati svoje okruženje tako da Yarn direktorij bude uključen u PATH varijablu.

Za ručne instalacije tarballa na Unix-sličnim sistemima, uobičajeni obrazac je izvoz putanje koja pokazuje na Yarn-ov bin direktorij. Na primjer:

export PATH="$PATH:/opt/yarn-[version]/bin"

Ovu liniju postavljate u datoteku profila vaše ljuske (npr. .bashrc, .bash_profile, .zshrc, ili slično), a zatim otvorite novu terminalnu sesiju ili izvorni kod datoteke kako bi promjena stupila na snagu. Jednom završeno, yarn --version trebalo bi da radi iz bilo kojeg direktorijuma.

Ako se oslanjate na yarn global naredbe, Yarn također mora osigurati da se njegov globalni folder bin nalazi na PATH-u. Brz način da to postignete je da proširite svoj profil sa:

export PATH="$PATH:`yarn global bin`"

Korisnici ribljih školjki umjesto toga se oslanjaju na fish_user_paths i može pokrenuti:

set -U fish_user_paths (yarn global bin) $fish_user_paths

Na Windowsu ćete možda morati ručno dodati i binarni direktorij Yarn u varijablu okruženja PATH. Jednostavan primjer bi bio:

set PATH=%PATH%;C:\.yarn\bin

U praksi, grafički instalatori ili Windows upravitelji paketa često rješavaju PATH konfiguraciju umjesto vas, ali je korisno znati kako je ručno prilagoditi kada nešto ne radi kako se očekuje.

Tipični problemi s instalacijom i kako ih riješiti

Čak i uz jasnu dokumentaciju, određeni problemi s instalacijom se pojavljuju iznova i iznova kada timovi usvoje Yarn. Srećom, većina njih ima dobro razumljiva, ponovljiva rješenja.

Jedan od problema koji se ponavlja su greške povezane s dozvolama prilikom instaliranja globalnog CLI-ja putem npm-a. Ako vaš npm prefiks ukazuje na direktorij u vlasništvu sistema, naredba poput:

sudo npm install -g yarn

Možda funkcioniše, ali nije idealno na duge staze. Bolji obrazac je konfigurirati npm da koristi globalni direktorij u vlasništvu korisnika. Trenutni prefiks možete provjeriti na sljedeći način:

npm config get prefix

Ako ukazuje na nešto ispod /usr, kreirajte vlastiti direktorij i rekonfigurirajte npm. Na primjer:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH

Nakon što ponovo učitate konfiguraciju vaše ljuske, trebali biste moći globalno instalirati Yarn bez sudo, čime se izbjegavaju mnoge glavobolje s dozvolom.

Još jedan čest izvor zabune su razlike u verzijama između globalnog Yarn-a i projektnog Yarn-a. Imajte na umu da je ovo namjerno: globalni 1.x CLI je samo pokretač i kada se koristi unutar Berry-konfigurisanog projekta, delegira se na bilo koje izdanje u kojem se nalazi .yarn/releases.

Ako se čini da paketi nedostaju iako je Yarn prijavio uspješnu instalaciju, moguće je da se radi o alatu koji još ne razumije PnP. Neki urednici, linteri ili alati za izgradnju pretpostavljaju node_modules direktorij i ne uspijevaju kada ne postoji. Uobičajena rješenja uključuju omogućavanje Yarn-ovih SDK-ova za urednike, korištenje kompatibilnih alata iz Yarn-ove matrice podrške ili privremeno prebacivanje linkera na node-modules preko .yarnrc.yml.

Sukobi zaključanih datoteka su neizbježni u aktivnim timovima gdje više grana paralelno dodaje ili mijenja zavisnosti. Kada yarn.lock konflikte tokom spajanja, efikasna strategija je odabrati jednu granu kao osnovnu liniju, ručno riješiti tekstualne konflikte u korist te osnovne linije gdje je to moguće, a zatim pokrenuti yarn install da regenerirate čistu lockfile datoteku koju ponovo commitujete kao novi izvor istine.

Problemi vezani za keš memoriju obično se rješavaju jednostavnim yarn cache clean nakon čega slijedi svježi yarn install. Ako se Yarn ponaša čudno, paketi izgledaju zastarjelo ili se pojavljuju čudne greške u rješavanju problema, čišćenje keš memorije i ponovna instalacija često vraćaju sistem u normalno stanje bez daljnjeg istraživanja.

Provjere nakon instalacije i kontinuirano podešavanje performansi

Nakon što je Yarn instaliran i uspješno pokreće naredbe, vrijedi provesti nekoliko brzih provjera ispravnosti kako biste bili sigurni da je sve ispravno povezano za vaš projekat. Prvo i najjednostavnije je potvrđivanje verzije:

yarn --version

Nakon toga, u bilo kojem projektu koji već ima package.json, izvršavanje yarn install bez grešaka je snažan pokazatelj da su vaše okruženje, pristup registru i verzija čvora kompatibilni. Ako su vaše zavisnosti velike, možda biste trebali pratiti vrijeme instalacije; pri sljedećim pokretanjima, Yarn-ovo keširanje i konkurentnost bi trebali znatno smanjiti to vrijeme.

Yarn također nudi naredbe poput yarn outdated da vidite koji paketi imaju dostupne novije verzije i yarn list --depth=0 da se ispišu sve zavisnosti najvišeg nivoa koje su zapravo instalirane. Ovi alati vam pomažu da pratite pomicanje zavisnosti i odlučite kada zakazati nadogradnje.

Što se tiče performansi, postoji nekoliko poluga koje možete povući nakon instalacije. Postavke poput networkConcurrency, prilagođene mape keša ili onemogućavanje detaljnih traka napretka u CI mogu skratiti velike instalacije za sekunde ili čak minute. Na primjer, povećanje konkurentnosti sa:

yarn config set network-concurrency 8

omogućava Yarn-u da šalje više mrežnih zahtjeva paralelno, često ubrzavajući preuzimanja na brzim vezama.

Konačno, za vrlo velike monorepozitorije ili postavke s više okruženja, kombiniranje Yarn-a sa skalabilnom infrastrukturom (kao što su CI cjevovodi zasnovani na kontejnerima ili platforme za izgradnju u oblaku) omogućava vam da u potpunosti iskoristite njegov deterministički i dizajn prilagođen kešu. Jer je svaka instalacija vođena yarn.lock i PnP ili node_modules Metapodaci, keš memorije dijeljene između CI čvorova ili ponovno korištene u različitim verzijama mogu dramatično skratiti vrijeme instalacije.

Sve u svemu, odvajanje vremena da se shvati kako pravilno instalirati Yarn, kako ga prikvačiti za svaki projekat, prilagoditi PATH i konfiguraciju, te iskoristiti njegove funkcije keširanja i radnog prostora, brzo se isplati. Na kraju dobijate brže instalacije, predvidljivije izgradnje, bolju ergonomiju monorepozitorija i radni tok upravljanja zavisnostima koji je lakše reproducirati između članova tima, CI/CD sistema i produkcijskih okruženja.

Slični postovi: