Ana içeriğe geç

Yarn

Okunuşu
yarn
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/yarn

Kısaca

Yarn, npm'e alternatif bir JavaScript paket yöneticisidir; bağımlılıkları npm deposundan kurar, lockfile, workspace ve Plug'n'Play desteği sunar.

Yarn nedir?

Yarn, Facebook'ta geliştirildi ve npm kurulumlarının yavaş olduğu, farklı makinelerde farklı sonuç verebildiği bir dönemde, 2016'da yayımlandı. Aynı package.json dosyasını okur ve paketleri aynı npm deposundan indirir; ama npm'in sonradan benimsediği fikirleri o getirdi: her paketin tam sürümünü sabitleyen bir lockfile, yani yarn.lock, ve tek bir depoda birden çok paketi yönetmek için workspace'ler. Ayrıca indirdiği paketleri bir önbellekte tutar; böylece tekrarlanan kurulumlar çevrimdışı da çalışabilir.

Bugün Yarn'ın iki kolu var. Artık Yarn Classic denen Yarn 1, node_modules klasörüyle npm'e çok benzer çalışır ve yalnızca ara sıra düzeltme alır. Sürüm 2 ve sonrası olan, Berry lakaplı modern Yarn ise baştan yazılmıştır ve varsayılan kurulum yöntemi Plug'n'Play'dir (PnP): binlerce dosyayı node_modules içine kopyalamak yerine, her paketin Yarn'ın önbelleğinde nerede durduğunu Node.js'e söyleyen tek bir .pnp.cjs dosyası yazar. Araçları gerçek bir node_modules klasörü bekleyen projeler .yarnrc.yml içinde nodeLinker: node-modules ayarını kullanabilir.

Günlük komutlar npm'inkilerden biraz farklıdır: tek başına yarn her şeyi kurar, yarn add react bir bağımlılık ekler, yarn test ise bir script'i run sözcüğü olmadan çalıştırır. Modern Yarn'ın sürümü her projede package.json içindeki packageManager alanıyla sabitlenir ve genellikle Corepack ile kurulur. Corepack, sürüm 25'e kadar Node.js ile birlikte gelen küçük bir yardımcı araçtır ve artık npm install -g corepack ile ayrıca kurulur.

Sık yapılan bir hata, Yarn'ı ayrı bir ekosistem sanmaktır. Öyle değildir: paketler aynı depodan gelir ve npm ile yayımlanmış bir kütüphane Yarn ile sorunsuz kurulur. Farklı olan istemcidir: komutları, lockfile biçimi, paketleri diske nasıl yerleştirdiği ve ne kadar hızlı kurduğu. npm o zamandan beri lockfile ve workspace konusunda arayı kapattı; bu yüzden seçim çoğunlukla çalışma alışkanlığına bağlıdır ve bir proje tek bir araçta kalıp yalnızca onun lockfile'ını commit etmelidir.

Önemli noktalar

  • Yarn, aynı npm deposunu ve package.json dosyasını kullanan bir JavaScript paket yöneticisidir.
  • Lockfile'ları (yarn.lock) ve workspace'leri yaygınlaştırdı; npm bunları sonradan benimsedi.
  • Yarn Classic (sürüm 1) node_modules kullanır ve yalnızca ara sıra düzeltme alır.
  • Modern Yarn varsayılan olarak Plug'n'Play kullanır; node_modules yerine tek bir .pnp.cjs dosyası yazar.
  • Her projede tek bir paket yöneticisi seçin ve yalnızca onun lockfile'ını commit edin.

Örnek

Yarn komutları ve npm'deki karşılıklarıbash
yarn                   # install everything from yarn.lock   (npm install)
yarn add react         # add a dependency                     (npm install react)
yarn add -D vitest     # add a dev dependency                 (npm install -D vitest)
yarn remove lodash     # remove a dependency                  (npm uninstall lodash)
yarn test              # run a script from package.json       (npm run test)
yarn dlx create-vite   # run a package once without adding it (npx create-vite)

Sık sorulan sorular

Yarn ile npm arasındaki fark nedir?

İkisi de paketleri package.json'a bakarak npm deposundan kurar. Komutlarında, lockfile'larında (yarn.lock ve package-lock.json) ve paketleri yerleştirme biçimlerinde ayrılırlar: modern Yarn'ın Plug'n'Play'i node_modules klasörünü tamamen atlar.

Yarn Classic ile Yarn Berry arasındaki fark nedir?

Yarn Classic, npm'e çok benzer çalışan ve artık aktif olarak geliştirilmeyen sürüm 1'dir. Berry ise modern Yarn'ın, yani sürüm 2 ve sonrasının adıdır: Plug'n'Play, eklentiler ve daha sıkı bağımlılık kuralları getiren, baştan yazılmış bir sürüm.

Aynı projede Yarn ve npm'i birlikte kullanabilir miyim?

Çalışır ama kötü bir fikirdir: her biri kendi lockfile'ını yazar, bu yüzden kurulumlar zamanla birbirinden ayrışabilir. Birini seçin, diğerinin lockfile'ını silin ve tercihinizi packageManager alanına yazın.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar