Yarn
- Okunuşu
- 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.jsondosyası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_moduleskullanır ve yalnızca ara sıra düzeltme alır. - Modern Yarn varsayılan olarak Plug'n'Play kullanır;
node_modulesyerine tek bir.pnp.cjsdosyası yazar. - Her projede tek bir paket yöneticisi seçin ve yalnızca onun lockfile'ını commit edin.
Örnek
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
- npmWeb Geliştirme, s. 39npm, Node.js'in varsayılan paket yöneticisi ve dünyanın en büyük yazılım deposudur; bir projenin bağımlılıklarını indirir ve sürümlerini takip eder.
- pnpmWeb Geliştirme, s. 40pnpm, her paket sürümünün tek kopyasını ortak bir depoda tutup projelere bağlayan, hızlı ve disk dostu bir JavaScript paket yöneticisidir.
- Paket YöneticisiProgramlamanın Temelleri, s. 48Paket yöneticisi, yazılım paketlerini ve onların bağımlılıklarını kuran, güncelleyen ve kaldıran, sürümleri otomatik olarak çözen bir araçtır.
- Node.jsBackend ve API'ler, s. 33Node.js, JavaScript'i tarayıcı dışında çalıştıran, en çok web sunucuları, API'ler ve komut satırı araçları için kullanılan açık kaynaklı çalışma ortamıdır.
- MonorepoSürüm Kontrolü, s. 31Monorepo, uygulamalar, servisler ve paylaşılan kütüphaneler gibi birçok projenin kodunu birlikte yönetilen tek bir sürüm kontrol deposunda tutma yaklaşımıdır.
- Semantic VersioningSürüm Kontrolü, s. 36Semantic versioning, her bölümün bir sürümün uyumluluğu bozduğunu, özellik eklediğini ya da hata düzelttiğini belirttiği MAJOR.MINOR.PATCH şemasıdır.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin