How To Install And Use The Yarn Package Manager For Node.js
Có thể bạn quan tâm
Understanding Yarn vs npm
Choose Yarn for faster, deterministic installs and first-class workspaces; choose npm for simpler, single-package projects or when your org standardizes on it.
Both Yarn and npm are package managers for Node.js, and they share many similarities. However, there are key differences that may influence your choice:
| Feature | Yarn | npm |
|---|---|---|
| Installation Speed | Faster initial and repeat installs due to parallelization and aggressive caching | Slower, especially for large projects, though recent versions have improved |
| Deterministic Installs | yarn.lock ensures identical installs across all environments | package-lock.json provides consistency, but historically less strict |
| Workspaces/Monorepos | First-class support, easy linking, mature integration | Basic support, fewer advanced features |
| Plug’n’Play Support | Supports PnP to remove node_modules, improving performance and saving disk space | No PnP support; always uses node_modules |
| Disk Space Efficiency | Lower (up to 50%) disk usage with PnP; global cache shared across projects | Comparable with Yarn in classic mode; higher with many projects |
| CI/CD Reliability | --immutable flag fails builds on lockfile drift, enforcing reproducibility | Lockfile warnings but does not enforce by default |
| Offline Installation | Strong offline support; aggressive local caching | Basic offline capabilities |
| Configuration File | YAML-based .yarnrc.yml - flexible and project-scoped | .npmrc - traditional key-value format |
| Custom Registry Support | Advanced settings (scopes, CA, authentication) in config | Supported via .npmrc |
| Telemetry | Disabled by default (enableTelemetry: false in config) | Enabled by default, must be opted out |
| Community & Ecosystem | Popular in React and monorepo setups; growing support | Default for Node.js; vast documentation and resources |
| Backward Compatibility | May require adaptation (e.g., yarn.lock not read by npm) | Standard baseline for most JavaScript projects |
Tip: In general, Yarn is recommended for teams that want speed, reproducibility, and monorepo-friendly workflows. npm remains a solid, straightforward choice for most Node.js applications, solo projects, or environments that standardize around npm.
Performance Characteristics
Installation Speed: Yarn’s parallel installation process and aggressive caching typically result in faster initial installs, especially for projects with many dependencies. Benchmarks often show Yarn completing installs in 60-70% of the time npm requires for large dependency trees.
Disk Space: When using Plug’n’Play (PnP) mode, Yarn can consume 40-50% less disk space by eliminating the node_modules directory. Traditional Yarn with node_modules typically uses similar space to npm.
Lock File Handling
Both tools generate lock files (yarn.lock and package-lock.json), but Yarn’s yarn.lock is generally considered more deterministic. The lock file format is more compact and explicitly tracks dependency resolution decisions, which can help debug version conflicts.
Concrete Scenarios
Scenario 1 — Monorepo with ~6 packages (shared ESLint/TS config)
- Problem: Cross‑package linking and consistent tooling versions are brittle.
- Yarn win: Workspaces auto‑link local packages; one lockfile; predictable hoisting.
Scenario 2 — CI/CD with strict reproducibility
- Problem: “Works on my machine” due to lockfile drift / partial installs.
- Yarn win: Use yarn install --immutable to fail builds if the lockfile doesn’t match, guaranteeing identical artifacts.
Scenario 3 — Corporate proxy / custom CA
- Problem: SSL MITM or private registries cause install failures.
- Yarn win: Configure trust/cert once in .yarnrc.yml (e.g., caFile, npmScopes) and keep CI in sync with the repo config.
Workspace Support
Yarn’s workspace feature is more mature and integrated than npm’s equivalent. Monorepos benefit from:
- Automatic workspace linking without explicit configuration
- Better dependency hoisting controls
- Seamless integration with tools like Lerna and Nx
- Editor SDKs: yarn dlx @yarnpkg/sdks vscode enables TypeScript/ESLint to understand PnP without node_modules.
When to Choose Yarn
Choose Yarn when:
- You need deterministic builds across different environments (CI/CD, team members, production)
- You’re working with large monorepos or multiple projects
- Disk space is at a premium and you want to explore PnP mode
- Your team values consistent, auditable dependency installations
- You’re building React applications (where Yarn has strong community support)
When to Use npm
Stick with npm when:
- Your project is simple with few dependencies (npm’s simplicity is an advantage)
- Your team is already comfortable with npm
- You’re using tools that better integrate with npm’s ecosystem
- The difference in installation speed doesn’t impact your workflow
Migration Note: It’s possible to switch between Yarn and npm in the same project, but not recommended. The lock files (yarn.lock and package-lock.json) serve different purposes and shouldn’t coexist. If migrating, delete one lock file and regenerate it with the tool you’re switching to.
Từ khóa » Chạy Yarn
-
Yarn - Một Cải Tiến đáng Kể So Với NPM - Viblo
-
Hướng Dẫn Install Yarn Qua Npm Hoặc Yarnpkg - Hoclaptrinh
-
Installation | Yarn
-
Yarn Run
-
Yarn Là Gì? Tại Sao Yarn đang Thay Thế Dần Npm - TopDev
-
Npm, Pnpm, And Yarn | JetBrains Rider
-
4 Methods For How To Install Yarn On Windows Server | Liquid Web
-
Running Spark On YARN - Spark 3.3.0 Documentation
-
Run Yarn Command - Integrations
-
Yarn Install Command Dont Run Correctly - Stack Overflow
-
Command "yarn Run Build" Exited With 1 When Deploying My NextJS ...
-
Yarn Run And Self-update CLI Commands - W3resource
-
Run The YARN Service On A Kerberized Cluster