# Yarn — Paket- und Projektmanager für Node.js

> Praxis-Guide zu Yarn — schnellem JavaScript-Paketmanager als npm-Alternative mit Workspaces, Offline-Cache und reproduzierbaren Installs per Lockfile.

Source: https://www.jpkc.com/db/cheatsheets/package-managers/yarn/

<!-- PROSE:intro -->
Yarn ist ein schneller JavaScript-Paketmanager und eine etablierte Alternative zu npm. Über die `yarn.lock`-Datei hält Yarn deine Abhängigkeiten reproduzierbar und installiert sie dank Offline-Cache zügig. Mit Workspaces verwaltest du Monorepos aus mehreren Paketen in einem einzigen Projekt. Wichtig ist die Unterscheidung zwischen Yarn Classic (v1) und dem modernen „Berry" (v2+), das mit Plug'n'Play ein anderes Installationsmodell mitbringt – einige Kommandos unterscheiden sich daher zwischen beiden Linien.
<!-- PROSE:intro:end -->

## Installieren & Initialisieren

`yarn init` — Erzeugt interaktiv eine neue package.json.

```bash
yarn init
```

`yarn init -y` — Erzeugt eine package.json mit Standardwerten.

```bash
yarn init -y
```

`yarn install` — Installiert alle Abhängigkeiten aus der package.json.

```bash
yarn install
```

`yarn` — Kurzform für yarn install.

```bash
yarn
```

`yarn install --frozen-lockfile` — Installiert, ohne die yarn.lock zu verändern (CI-sicher).

```bash
yarn install --frozen-lockfile
```

## Pakete hinzufügen & entfernen

`yarn add <package>` — Fügt ein Paket als Abhängigkeit hinzu.

```bash
yarn add express
```

`yarn add <package>@<version>` — Fügt eine bestimmte Version hinzu.

```bash
yarn add react@18.2.0
```

`yarn add -D <package>` — Fügt ein Paket als Entwicklungs-Abhängigkeit hinzu.

```bash
yarn add -D typescript eslint
```

`yarn add --peer <package>` — Fügt ein Paket als Peer-Abhängigkeit hinzu.

```bash
yarn add --peer react
```

`yarn remove <package>` — Entfernt ein Paket.

```bash
yarn remove lodash
```

`yarn add <package> --exact` — Fügt ein Paket mit exakter Version hinzu (ohne ^- oder ~-Präfix).

```bash
yarn add react --exact
```

## Aktualisieren & Informationen

`yarn upgrade <package>` — Aktualisiert ein Paket auf die neueste Version innerhalb des erlaubten Bereichs.

```bash
yarn upgrade express
```

`yarn upgrade --latest` — Aktualisiert alle Pakete auf ihre jeweils neueste Version.

```bash
yarn upgrade --latest
```

`yarn outdated` — Zeigt veraltete Pakete an.

```bash
yarn outdated
```

`yarn info <package>` — Zeigt ausführliche Informationen zu einem Paket an.

```bash
yarn info react
```

`yarn list` — Listet installierte Pakete auf.

```bash
yarn list --depth=0
```

`yarn why <package>` — Zeigt an, warum ein Paket installiert ist (Abhängigkeitskette).

```bash
yarn why webpack
```

## Skripte & Ausführen

`yarn run <script>` — Führt ein in der package.json definiertes Skript aus.

```bash
yarn run build
```

`yarn <script>` — Kurzform für yarn run.

```bash
yarn build
```

`yarn start` — Führt das start-Skript aus.

```bash
yarn start
```

`yarn test` — Führt das test-Skript aus.

```bash
yarn test
```

`yarn dlx <package>` — Führt ein Paket aus, ohne es zu installieren (wie npx).

```bash
yarn dlx create-react-app my-app
```

## Workspaces

`yarn workspaces list` — Listet alle Workspaces im Projekt auf.

```bash
yarn workspaces list
```

`yarn workspace <name> add <package>` — Fügt einem bestimmten Workspace ein Paket hinzu.

```bash
yarn workspace @myapp/server add express
```

`yarn workspace <name> run <script>` — Führt ein Skript in einem bestimmten Workspace aus.

```bash
yarn workspace @myapp/client run build
```

`yarn workspaces foreach run <script>` — Führt ein Skript in allen Workspaces aus.

```bash
yarn workspaces foreach run test
```

## Cache & Konfiguration

`yarn cache clean` — Leert den globalen Paket-Cache.

```bash
yarn cache clean
```

`yarn config set <key> <value>` — Setzt einen Konfigurationswert.

```bash
yarn config set registry https://registry.npmjs.org
```

`yarn config list` — Zeigt alle Konfigurationswerte an.

```bash
yarn config list
```

`yarn global add <package>` — Installiert ein Paket global (Yarn Classic).

```bash
yarn global add serve
```

<!-- PROSE:outro -->
## Fazit

Yarn bündelt schnelle, reproduzierbare Installs, einen Offline-Cache und erstklassige Workspace-Unterstützung in einem Werkzeug – ideal für Monorepos und größere Projekte. Pinne Versionen bewusst (`--exact`) und nutze in CI-Pipelines `yarn install --frozen-lockfile` (Classic) bzw. `yarn install --immutable` (Berry), damit Builds reproduzierbar bleiben und die `yarn.lock` nicht unbemerkt verändert wird. Behalte die Install-Skripte deiner Abhängigkeiten im Blick – sie sind ein verbreiteter Supply-Chain-Vektor. Und denk daran, Classic- und Berry-Kommandos nicht zu vermischen: Was unter v1 funktioniert, heißt unter v2+ oft anders.

## Weiterführende Links

- [yarnpkg.com](https://yarnpkg.com/) – offizielle Projektseite mit Dokumentation und CLI-Referenz (englisch)
- [Yarn – GitHub-Projekt](https://github.com/yarnpkg/berry) – Quellcode, Releases und Issues (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [apk](https://www.jpkc.com/db/cheatsheets/package-managers/apk/) – Paketmanager von Alpine Linux
- [apt](https://www.jpkc.com/db/cheatsheets/package-managers/apt/) – Paketverwaltung für Debian und Ubuntu
- [apt-get](https://www.jpkc.com/db/cheatsheets/package-managers/apt-get/) – klassisches Paket-Werkzeug für Debian und Ubuntu

