npm VS yarn

Compare npm vs yarn and see what are their differences.

yarn

The 1.x line is frozen - features and bugfixes now happen on https://github.com/yarnpkg/berry (by yarnpkg)
Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
npm yarn
48 34
17,233 41,328
- 0.1%
2.1 0.0
over 3 years ago 22 days ago
JavaScript JavaScript
Artistic License 2.0 GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

npm

Posts with mentions or reviews of npm. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-09-20.
  • XML is better than YAML
    17 projects | news.ycombinator.com | 20 Sep 2023
    The fact that JSON doesn't support comments is so annoying, and I always thought that Douglas Crockford's rationale for this basically made no sense ("They can be misused!" - like, so what, nearly anything can be misused. So without support for comments e.g. in package.json files I have to do even worse hacky workaround bullshit like "__some_field_comment": "this is my comment"). There is of course jsonc and JSON5 but the fact that it's not supported everywhere means 10 years later we still can't write comments in package.json (there is https://github.com/npm/npm/issues/4482 and about a million related issues).
  • Jest not recommended to be used in Node.js due to instanceOf operator issues
    9 projects | news.ycombinator.com | 30 Jun 2023
    Things like the sparkline charts on npmjs (e.g. https://www.npmjs.com/package/npm ) are interactive SVGs. I think they're pretty common for data visualizations of all kinds
  • JavaScript registry NPM vulnerable to 'manifest confusion' abuse
    3 projects | news.ycombinator.com | 27 Jun 2023
    I actually did a POC 7 years ago about this - https://github.com/tanepiper/steal-ur-stuff

    It was reported to npm at the time, but they chose to ignore it - https://github.com/npm/npm/issues/17724

  • I'm a Teapot
    4 projects | news.ycombinator.com | 26 May 2023
    Every time this pops up, I'm reminded of the day that the NPM registry started returning 418 responses.

    I remember being at a training course that day and my manager asking me what we could do to fix it because our CI was failing to pull dependencies from NPM.

    Trying to explain that NPM was returning a status code intended as an April Fools joke and which was never meant to see the light of production was quite difficult

    https://github.com/npm/npm/issues/20791

  • Dissecting Npm Malware: Five Packages And Their Evil Install Scripts
    4 projects | /r/javascript | 18 Apr 2023
    I should really get around to how I discovered this 6 years ago and still nothing done about it
  • Attackers are hiding malware in minified packages distributed to NPM
    4 projects | /r/javascript | 30 Mar 2023
    Whenever something like this comes up I usually have to tap the sign (and the original report)
  • NPM Vs PNPM
    1 project | /r/npm | 23 Mar 2023
    NPM is not "Node Package Manager". https://www.npmjs.com/package/npm
  • A not so unfortunate sharp edge in Pipenv
    8 projects | news.ycombinator.com | 20 Dec 2022
    > which can be overriden with env setting

    Support for this is not great. Lots of packages still don't support this properly. My experience matches the 2015 comment https://github.com/npm/npm/issues/775#issuecomment-71294085

    > Not sure why "symlinks" would be involved.

    If you make your node_modules a symlink, multiple packages will fail. Even if you're not interested in doing that, others are.

    > What NPM does is leaps and bounds ahead

    Unless you change your node / gyp version. It doesn't really have a concept of runtime version. You can restrict it, but not have two concurrent versions if they conflict.

  • Front-end Guide
    54 projects | dev.to | 23 Nov 2022
    [email protected] was released in May 2017 and it seems to address many of the issues that Yarn aims to solve. Do keep an eye on it!
  • Framework axios pushed a broken update, crippling thousands of websites
    6 projects | /r/programming | 7 Oct 2022
    I think it's had been supposed to do that since forever. Apart from some bug in npm 5.3. Are you sure your package-lock versions actually conform to the semver ranges in your package.json?

yarn

Posts with mentions or reviews of yarn. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-18.
  • Configurar Solana en Linux
    4 projects | dev.to | 18 Dec 2023
  • Set up your own LMQL environment.
    3 projects | /r/LocalLLaMA | 7 Dec 2023
    instead. Please refer tothis issue for guidance. Following the instructions in this issue will ensure the correct installation of Yarn.
  • What is jQuery?
    3 projects | dev.to | 18 Sep 2023
    As an alternative, you can use the Yarn CLI command:
  • Lockfile merge conflicts, how to handle it correctly?
    3 projects | dev.to | 14 Jul 2023
    The PR for Auto detect and merge lockfile conflicts provides insight into the latest implementation in /src/lockfile/parse.js.
  • Yarn Install Broken
    1 project | /r/node | 15 Apr 2023
    this this maybe https://github.com/yarnpkg/yarn/issues/8331
  • How I Built an Android Ecommerce App with Medusa
    4 projects | dev.to | 2 Mar 2023
    Yarn, but you can use npm or pnpm as alternatives to yarn if you prefer.
  • Benchmarks of JavaScript Package Managers
    1 project | news.ycombinator.com | 28 Feb 2023
    Yarn definitely shot themselves in the foot badly. PnP identified real problems & came up with a solution, but pnpm is doing a similar set of tricks but in a Node-ecosystem-compatible way, with next to no compatibility issues (versus package maintainers having to each individually support Yarn V2 PnP). Yarn V2 seemingly thought they could get the entire npm package world to switch to yarn, saw their growth & saw the thought-leaders & decided their winning was a fait-accompli.

    And they didn't really execute very well... v2 landed, there was controversy, and there's been so little visible or exciting good news about it. It over-played Yarns so hand they renamed Yarn v2 as Berry, just to re-gather the troops & make a staging point forward. But it's still an incredibly hard pill to swallow, and the "yarn (berry) is great, the ecosystem needs to change" attitude seemingly isn't gaining any traction and it's hard to tell where Yarn could go.

    In Yarn v3[1], they've introduced a modular "linker" system for how to install packages, that seemingly might get them able to experiment around/play around a little more & be less constrained than the hard-path they'd crusaded for.

    One thing I will say for Yarn, that makes me unbelievably happy versus npm (announced during the V2[2] announcement):

    > Yarn is first and foremost a Node API that can be used programmatically (via @yarnpkg/core)

    Npm is the premier tool for open-source javascript, but it itself is one of the least open-source efforts on the planet. I finally started digging around the npm package and it's underlying cacache cache-structure, and it's just infinitely unpleasant to get started with. There's maybe like 3 articles on the whole planet that have any guidance for what npm is inside, how it works, what you can do with it, how you can hack it. Yarn identifying that the package manager itself is something that developers need access to is a huge win & I want to thank them forever for putting that on their bullet list of great Yarn things.

    [1] https://dev.to/arcanis/yarn-3-0-performances-esbuild-better-...

    [2] "Yarn's Future - v2 and beyond" https://github.com/yarnpkg/yarn/issues/6953

  • Using TypeScript 4.9 with Next.js 12
    3 projects | dev.to | 10 Feb 2023
    Unfortunately, as I found out, yarn's resolutions property has a long history of not playing well with optionalDependencies: anything placed into resolutions is treated as required and will abruptly fail to install if it is, for example, a platform-specific package appropriate for your deploy environment but not your dev environment or vice versa, as is the case here.
  • TypeScript all-in-one: Monorepo with its pains and gains
    4 projects | dev.to | 29 Oct 2022
    It was July 2021. I started with [email protected] since I’ve been using it for a long time. Yarn was fast, but soon I met several issues with Yarn Workspaces. E.g., not hoisting dependencies correctly, and tons of issues are tagged with “fixed in modern”, which redirects me to the v2 (berry).
  • Why aren't Node.js package managers interoperable?
    6 projects | dev.to | 7 Oct 2022
    Upgrading dependencies: Yarn 1's yarn upgradeonly upgrades direct dependencies of the current workspace. Yarn 2's up ignores the version ranges in your package.json and upgrades for all workspaces. npm's and pnpm'supdate respect your version ranges and upgrade indirect dependencies as well.

What are some alternatives?

When comparing npm and yarn you can also consider the following projects:

pnpm - Fast, disk space efficient package manager

berry - 📦🐈 Active development trunk for Yarn ⚒

corepack - Zero-runtime-dependency package acting as bridge between Node projects and their package managers

spm

Bower - A package manager for the web

yarn-deduplicate - Deduplication tool for yarn.lock files

jspm

setup-node - Set up your GitHub Actions workflow with a specific version of node.js

jam