A fast, reliable, and secure modern package manager with a plugin-based architecture and native workspace support.
Yarn Berry is the active development trunk of the Yarn package manager, offering a modern, plugin-based architecture for managing JavaScript dependencies. It solves common package management issues by introducing features like Plug'n'Play for faster installs, native workspace support for monorepos, and a portable shell for cross-platform script execution. Its extensible design allows developers to customize and extend its capabilities through plugins.
JavaScript and Node.js developers working on projects of any size, especially those using monorepos, needing reliable dependency management, or seeking advanced features like PnP and workspace optimization.
Developers choose Yarn Berry for its performance, reliability, and extensibility—its plugin system and PnP support offer faster, more deterministic builds than traditional package managers, while its TypeScript foundation ensures robustness and maintainability.
📦🐈 Active development trunk for Yarn ⚒
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The architecture allows plugins to be added directly to the repository, enabling custom protocols and support for languages beyond Node.js, as described in the README's plugin section.
Plug'n'Play eliminates node_modules for faster installs and more reliable builds by resolving dependencies via a generated .pnp.cjs file, reducing disk usage and improving performance.
First-class workspace support with commands tailored for multi-package projects, making it ideal for large-scale codebases as highlighted in the features list.
Portable shell ensures package scripts run identically across Windows, Linux, and macOS, addressing common platform-specific issues in npm scripts.
Exposes a Node API (@yarnpkg/core) for embedding Yarn's capabilities into other tools and scripts, facilitating automation and custom workflows.
Some IDEs and build tools require patches or additional configuration to work with Plug'n'Play, as acknowledged by the built-in plugin-compat for fixes.
Plugins must be distributed as single JavaScript files and aren't fetched from npm, limiting discoverability and increasing setup complexity compared to registry-based ecosystems.
Moving from Yarn 1.x or npm involves breaking changes and a detailed migration guide, with PnP adoption potentially disrupting existing workflows.
Checking in dependency caches and plugins can inflate repository size, which may be problematic for version control systems compared to lightweight node_modules setups.