# Yarn

Adres: https://softwaredictionary.org/tr/terimler/yarn
Kategori: Web Geliştirme
Son güncelleme: 2026-10-06
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.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.

## Kaynaklar

- [Yarn documentation: Introduction](https://yarnpkg.com/getting-started)
- [Yarn documentation: Plug'n'Play](https://yarnpkg.com/features/pnp)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
