# Yarn — Modern JavaScript Package Manager with Plug'n'Play > Yarn is a fast, reliable JavaScript package manager with workspaces, offline caching, and an optional Plug'n'Play install strategy that eliminates node_modules. ## Install Save in your project root: # Yarn — Modern JavaScript Package Manager with Plug'n'Play ## Quick Use ```bash corepack enable yarn init -2 yarn add react yarn install ``` ## Introduction Yarn is a JavaScript and TypeScript package manager created to solve consistency and performance problems in the npm ecosystem. Its modern version (Berry / Yarn 4) introduces Plug'n'Play, workspaces, and strict dependency resolution by default. ## What Yarn Does - Installs npm-compatible packages with deterministic lockfile resolution - Supports workspaces for monorepo dependency management - Offers Plug'n'Play (PnP) mode that removes the need for `node_modules` - Provides offline mirroring so installs work without network access - Enforces strict peer dependency rules to catch version conflicts early ## Architecture Overview Yarn 4 (Berry) is written in TypeScript and ships as a single self-contained JS file committed to your repo via `.yarn/releases`. It resolves dependencies from the lockfile (`yarn.lock`), fetches compressed archives into a global or local cache, and in PnP mode generates a `.pnp.cjs` loader that maps import requests to zip entries without extracting to disk. ## Self-Hosting & Configuration - Enable Corepack (`corepack enable`) so the correct Yarn version is used per project - Set the Yarn version per repo with `yarn set version stable` - Configure `.yarnrc.yml` for registry URLs, PnP settings, and plugin paths - Use `yarn workspaces foreach` to run scripts across monorepo packages - Store the cache in `.yarn/cache` and commit it for fully offline CI ## Key Features - Plug'n'Play eliminates `node_modules` for faster installs and stricter resolution - Built-in workspace support for multi-package repositories - Constraints engine lets you enforce dependency rules across a monorepo - Extensible via plugins (TypeScript, interactive tools, workspace utilities) - Corepack integration ensures contributors use the exact same version ## Comparison with Similar Tools - **npm** — ships with Node.js and works everywhere; Yarn adds PnP, workspaces constraints, and offline installs - **pnpm** — uses a content-addressable store and hard links; Yarn PnP avoids disk extraction entirely - **Bun** — all-in-one runtime with a built-in package manager; Yarn focuses purely on dependency management - **Turbo** — monorepo task runner; Yarn manages dependencies while Turbo orchestrates builds on top ## FAQ **Q: Is Yarn 4 backwards-compatible with Yarn 1 (Classic)?** A: The CLI commands are mostly compatible, but the internals differ significantly. Yarn 1 is in maintenance mode; migration to Yarn 4 requires running `yarn set version berry`. **Q: Do all Node libraries work with Plug'n'Play?** A: Most do. Packages that rely on undeclared dependencies need a `packageExtensions` entry in `.yarnrc.yml`. The ecosystem compatibility is high. **Q: Can I still use node_modules instead of PnP?** A: Yes. Set `nodeLinker: node-modules` in `.yarnrc.yml` to fall back to the traditional layout. **Q: How does Yarn handle security auditing?** A: Run `yarn npm audit` to check for known vulnerabilities in your dependency tree, similar to `npm audit`. ## Sources - https://github.com/yarnpkg/berry - https://yarnpkg.com/ --- Source: https://tokrepo.com/en/workflows/b49e4acf-40e3-11f1-9bc6-00163e2b0d79 Author: AI Open Source