Skip to main content

The year 2022 for pnpm

· 3 min read

It is the end of the year. A really hard year. As you may know, I live in Ukraine, so due to Russia's war against us, it was harder to lead this project than in previous years. Nevertheless, it was a good year for pnpm. We've got a lot of new users, contributors, and we have implemented many great features.

(the above illustration was generated by Midjourney. The tiger symolizes the year of the tiger)

Usage

Download Stats

My goal this year was to beat Lerna by the number of downloads. We were able to achieve this goal in August:

pnpm was downloaded more than 5 times more in 2022 than in 2021:

Docs visits

We collect some unpersonalized stats from our docs using Google Analytics. In 2022, sometimes we had more than 20,000 unique visitors a week. This is 10 times more than in 2021!

GitHub stars

Our main GitHub repository received almost +7,000 stars this year.

Our contributors

We had a lot of new and active contributors this year. These are the people the merge at least one PR in 2022:

Feature Highlights

Supporting a symlinkless hoisted node_modules (since v6.25.0)

Right at the beginning of 2022, we have added support for the "traditional" hoisted (a.k.a flat node_modules). We use Yarn's hoisting algorithm to create a proper hoisted node_modules. This new setting has basically made pnpm compatible with all Node.js stack that are compatible with npm CLI.

To use the hoisted node_modules directory structure, use the node-linker=hoisted setting in an .npmrc file.

Side effects cache (since v7.0.0)

Since v7, side-effect-cache is enabled by default, so dependencies that should be built are only built once on a machine. This improves installation speed by a lot in projects that have dependencies with build scripts.

Dependencies patching (since v7.4.0)

The pnpm patch command have been added for patching dependencies in your node_modules.

Time-based resolution strategy (since v7.10.0)

A new resolution mode was added to pnpm, which should make updating dependencies more secure. You can change the resolution mode with the resolution-mode setting.

Listing licenses of dependencies (since v7.17.0)

You may now use the pnpm licenses list command to check the licenses of the installed packages.