Yarn is one of the main JavaScript package managers,[3][4] developed in 2016 by Sebastian McKenzie of Meta (formerly Facebook) for the Node.js JavaScript runtime environment. An alternative to the npm package manager, Yarn was created as a collaboration of Facebook (now Meta), Exponent (now Expo.dev), Google, and Tilde (the company behind Ember.js) to solve consistency, security, and performance problems with large codebases.[5]
Developer(s) | Various |
---|---|
Initial release | 18 June 2016[1] |
Stable release | 4.5.1[2]
/ 18 October 2024 |
Repository | |
Written in | TypeScript, JavaScript |
Platform | Cross-platform |
Type | Package manager |
License | BSD 2-Clause License |
Website | yarnpkg |
History
editYarn 1.0 was able to forcibly override the version of transitive dependencies.[6][7]
Plugins
editUsers can write their own plugins for Yarn.
Constraints
editYarn constraints allow users to enforce rules for their dependencies or manifest fields across scoped workspaces.
Offline cache
editDownloaded packages are cached and stored as a single file.
Plug'n'Play
editPlug'n'Play allows users to run Node projects without node_modules
folder, defining the way or location to resolve dependencies package files with the Plug-n-Play-control file. This feature is aimed to fix an unwell structured node_modules
architecture and resulting in a faster Node.js application start-up time.
Plugins
editPlugins can add new resolvers, fetchers, linkers, commands, and can also register to some events or be integrated with each other, most features of Yarn are implemented through plugins, including yarn add
and yarn install
, which are also preinstalled plugins.
Protocols
editUsers can define which protocol will be used to resolve certain packages, for example, the git protocol is used for downloading a public package from a Git repository, and the patch protocol is used for creating a patched copy of the original package.
Release Workflow
editRelease Workflow automatically upgrades relative packages among monorepos workspaces when root packages are upgraded.
Workspaces
editWorkspaces allow multiple projects to work together in the same repository and automatically apply changes to other relatives when source code is modified, allowing installation of multiple packages in a single pass by running the installation command only once.
Zero-Installs
editZero-Installs solve the needs of installation of packages when packages is required to install when the codes is just fresh fetched to local.
Comparison to npm
editSyntax
editTo install yarn:
npm install -g yarn
To install a package with yarn:[10]
yarn add package-name
To install a package with yarn for development and testing purposes:
yarn add package-name --dev
NB: in the first versions, it was:
yarn install package-name --save-dev
See also
editReferences
edit- ^ "Earliest releases of yarn". GitHub. Retrieved Jun 18, 2016.
- ^ "Release 4.5.1". 18 October 2024. Retrieved 27 October 2024.
- ^ "Package management basics". MDN. 2022-09-28.
- ^ "5 best JavaScript Package Managers". Dunebook.com. 2022-02-05.
- ^ "Yarn: A new package manager for JavaScript". Engineering at Meta. 2016-10-11. Retrieved 2021-11-22.
- ^ Christoph Nakazawa, Maël Nison (7 September 2017). "Announcing Yarn 1.0". Retrieved 5 October 2024.
- ^ Nayyar, Vivek (21 March 2020). "How to fix Security Vulnerabilities in NPM Dependencies in 3 Minutes". Retrieved 5 October 2024.
- ^ "Package Manager – NPM and Yarn Explained with Examples". Sitepoint. 2021-09-21.
- ^ "How To Install and Use the Yarn Package Manager for Node.js". DigitalOcean. 2021-08-10.
- ^ "Yarn vs npm: Everything You Need to Know". CodeSweetly. 2023-02-04.