• This repository has been archived on 21/Sep/2023
  • Stars
    star
    442
  • Rank 98,677 (Top 2 %)
  • Language
    JavaScript
  • Created about 8 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Benchmarks of JavaScript Package Managers

The benchmarks are now available on the pnpm website.

The code that generates the benchmarks was moved here.


Benchmarks of JavaScript Package Managers

This benchmark compares the performance of npm, pnpm and Yarn (both regular and PnP variant).

Here's a quick explanation of how these tests could apply to the real world:

  • clean install: How long it takes to run a totally fresh install: no lockfile present, no packages in the cache, no node_modules folder.
  • with cache, with lockfile, with node_modules: After the first install is done, the install command is run again.
  • with cache, with lockfile: When a repo is fetched by a developer and installation is first run.
  • with cache: Same as the one above, but the package manager doesn't have a lockfile to work from.
  • with lockfile: When an installation runs on a CI server.
  • with cache, with node_modules: The lockfile is deleted and the install command is run again.
  • with node_modules, with lockfile: The package cache is deleted and the install command is run again.
  • with node_modules: The package cache and the lockfile is deleted and the install command is run again.
  • update: Updating your dependencies by changing the version in the package.json and running the install command again.

Lots of Files

The app's package.json here

action cache lockfile node_modules npm pnpm Yarn Yarn PnP
install 51s 14.4s 39.1s 29.1s
install ✔ ✔ ✔ 5.4s 1.3s 707ms n/a
install ✔ ✔ 10.9s 3.9s 11s 1.8s
install ✔ 33.4s 6.5s 26.5s 17.2s
install ✔ 28.3s 11.8s 23.3s 14.2s
install ✔ ✔ 4.6s 1.7s 22.1s n/a
install ✔ ✔ 6.5s 1.3s 713ms n/a
install ✔ 6.1s 5.4s 41.1s n/a
update n/a n/a n/a 5.1s 10.7s 35.4s 28.3s

Graph of the alotta-files results

More Repositories

1

pnpm

Fast, disk space efficient package manager
TypeScript
28,979
star
2

action-setup

Install pnpm package manager
TypeScript
880
star
3

pacquet

experimental package manager for node.js
Rust
765
star
4

only-allow

Force a specific package manager to be used on a project
JavaScript
571
star
5

pnpm.io

pnpm's website
JavaScript
218
star
6

pn

This is an experimental wrapper over the pnpm CLI written in Rust
Rust
85
star
7

awesome-pnpm

Awesome pnpm resources
76
star
8

symlink-dir

Cross-platform directory symlinking
TypeScript
71
star
9

meta-updater

TypeScript
54
star
10

supi

Fast, disk space efficient installation engine. Used by pnpm
TypeScript
24
star
11

reflink

JavaScript
23
star
12

rfcs

18
star
13

get.pnpm.io

JavaScript
17
star
14

registry-mock

Mock the npm registry
JavaScript
16
star
15

merge-driver

A merge driver for pnpm-lock.yaml
TypeScript
16
star
16

sample-project

A sample project demonstrating the results of installing with pnpm
15
star
17

self-installer

Installs pnpm
JavaScript
13
star
18

docker-pnpm

Automated docker image with pnpm pre-installed
Shell
11
star
19

get-npm-tarball-url

Create the tarball URL of a npm package
TypeScript
11
star
20

spec

pnpm specifications
10
star
21

hook-utils

A helper for pnpmfile.js files
TypeScript
8
star
22

exec

Executes pnpm. If pnpm is not installed, installs it first
TypeScript
7
star
23

node-modules-check

Checks packages in node_modules
TypeScript
5
star
24

graph-sequencer

JavaScript
5
star
25

ecosystem-issues

5
star
26

link-bins

Link bins to node_modules/.bin
TypeScript
4
star
27

pnpm-default-reporter

The default reporter of pnpm
TypeScript
4
star
28

semver-diff

Gets the difference between two semver versions
TypeScript
4
star
29

parse-codeload-url

Parse a tarball URL hosted on codeload.github.com
TypeScript
4
star
30

encode-registry

Encodes a registry URL. Memoized.
JavaScript
3
star
31

parse-npm-tarball-url

Parse a tarball URL hosted in the npm registry
TypeScript
3
star
32

pnpm-shrinkwrap

pnpm's shrinkwrap
TypeScript
3
star
33

store-path

Resolves the pnpm store path
TypeScript
3
star
34

codemod

TypeScript
3
star
35

logger

Logger for pnpm
TypeScript
3
star
36

tarball-fetcher

Fetcher for packages hosted as tarballs
TypeScript
2
star
37

file-reporter

A file reporter for pnpm
TypeScript
2
star
38

components

TypeScript
2
star
39

remove-all-except-outer-links

Removes everything from a folder except external symlinks
JavaScript
2
star
40

pnpm-simple-reporter

A simple reporter for pnpm
TypeScript
2
star
41

pnpm-list

List installed packages in a symlinked `node_modules`
TypeScript
2
star
42

colorize-semver-diff

Makes a colorful semver diff
TypeScript
2
star
43

fetch-from-npm-registry

A fetch lib specifically for using with the npm registry
TypeScript
2
star
44

npm-resolver

Resolver for npm-hosted packages
TypeScript
1
star
45

credentials-by-uri

Gets credentials for URI from npm configs
JavaScript
1
star
46

normalize-registry-url

Normalizes a npm registry URL
JavaScript
1
star
47

package-requester

Concurrent downloader of npm-compatible packages
TypeScript
1
star
48

lib

1
star
49

check-package

Checks the integrity of a package
TypeScript
1
star
50

fs-locker

An fs locker for pnpm
TypeScript
1
star
51

manifesto

The pnpm manifesto
1
star
52

package-store

A storage for npm packages. Used by pnpm
TypeScript
1
star
53

pkgid-to-filename

Converts a package ID to a valid file name
TypeScript
1
star
54

resolver-base

Types for pnpm-compatible resolvers
TypeScript
1
star
55

default-fetcher

pnpm's default package fetcher
TypeScript
1
star
56

test-git-fetch

JavaScript
1
star
57

tarball-resolver

Resolver for tarball dependencies
TypeScript
1
star
58

redirects

1
star
59

modules-yaml

Reads/writes node_modules/.modules.yaml
TypeScript
1
star
60

.github

1
star
61

pnpm-install-checks

A package that contains checks that pnpm runs during the installation.
JavaScript
1
star
62

pnpm-bin-runner

A bin runner for pnpm
TypeScript
1
star
63

lifecycle

Package lifecycle hook runner
TypeScript
1
star
64

headless

Fast installation using only shrinkwrap.yaml
TypeScript
1
star
65

read-package-json

TypeScript
1
star
66

dependency-path

Utilities for working with symlinked node_modules
TypeScript
1
star
67

server

A pnpm installer server
TypeScript
1
star
68

outdated

Check for outdated packages
TypeScript
1
star
69

fetcher-base

Types for pnpm-compatible fetchers
TypeScript
1
star
70

assert-project

Utils for testing projects that use pnpm
TypeScript
1
star
71

version-selector-type

Returns the type of a version selector
JavaScript
1
star
72

default-resolver

pnpm's default package resolver
TypeScript
1
star
73

types

Basic types used by pnpm
TypeScript
1
star
74

git-fetcher

Fetcher for git-hosted packages
TypeScript
1
star
75

pnpmr

Deprecated. Use the `pnpm recursive` commands instead
JavaScript
1
star
76

local-resolver

Resolver for local packages
TypeScript
1
star
77

package-bins

Returns bins of a package
TypeScript
1
star
78

dependencies-hierarchy

Creates a dependencies hierarchy for a symlinked node_modules
TypeScript
1
star
79

git-resolver

Resolver for git-hosted packages
TypeScript
1
star
80

testimonials

Testimonials about pnpm
1
star