pnpm/pnpm


📦🚀 Fast, disk space efficient package manager

https://pnpm.js.org

License: MIT

Language: TypeScript

Keywords: dependency-manager, install, javascript, modules, node, nodejs, npm, package-manager


pnpm

Fast, disk space efficient package manager

npm version Status Windows build status Join the chat at https://gitter.im/pnpm/pnpm OpenCollective OpenCollective Twitter Follow

Features:

  • Fast. As fast as npm and Yarn.
  • Efficient. One version of a package is saved only ever once on a disk.
  • Great for multi-package repositories (a.k.a. monorepos). See the recursive commands.
  • Strict. A package can access only dependencies that are specified in its package.json.
  • Deterministic. Has a lockfile called pnpm-lock.yaml.
  • Works everywhere. Works on Windows, Linux and OS X.
  • Aliases. Install different versions of the same package or import it using a different name.

Like this project? Let people know with a tweet.

Table of Contents

Background

pnpm uses hard links and symlinks to save one version of a module only ever once on a disk. When using npm or Yarn for example, if you have 100 projects using the same version of lodash, you will have 100 copies of lodash on disk. With pnpm, lodash will be saved in a single place on the disk and a hard link will put it into the node_modules where it should be installed.

As a result, you save gigabytes of space on your disk and you have a lot faster installations! If you'd like more details about the unique node_modules structure that pnpm creates and why it works fine with the Node.js ecosystem, read this small article: Flat node_modules is not the only way.

Install

Using a standalone script:

curl -L https://unpkg.com/@pnpm/self-installer | node

Via npm:

npm install -g pnpm

Once you first installed pnpm, you can upgrade it using pnpm:

pnpm install -g pnpm

Do you wanna use pnpm on CI servers? See: Continuous Integration.

Usage

pnpm CLI

Just use pnpm in place of npm. For instance, to install run:

pnpm install lodash

For more advanced usage, read pnpm CLI on our website.

For using the programmatic API, use pnpm's engine: supi.

pnpx CLI

npm has a great package runner called npx. pnpm offers the same tool via the pnpx command. The only difference is that pnpx uses pnpm for installing packages.

The following command installs a temporary create-react-app and calls it, without polluting global installs or requiring more than one step!

pnpx create-react-app my-cool-new-app

Benchmark

pnpm is as fast as npm and Yarn. See all benchmarks here.

Benchmarks on a React app:

Support

Contributors

This project exists thanks to all the people who contribute. [Contribute].

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

License

MIT

Project Statistics

Sourcerank 15
Repository Size 39 MB
Stars 5,863
Forks 142
Watchers 57
Open issues 277
Dependencies 1,354
Contributors 68
Tags 1,281
Created
Last updated
Last pushed

Top Contributors See all

Zoltan Kochan Rico Sta. Cruz Renovate Bot greenkeeper[bot] Greenkeeper Emanuele Tamponi Andrey Popp Dave Jeffery renovate[bot] Tejasvi (Teju) Nareddy ExE Boss Vaughan Rouesnel Federico Giovagnoli Georgios Valotasios Vladimir Starkov Charlie Robbins Peter Dave Hello Akshay Kadam (A2K) David Björklund Adam Byrne

Packages Referencing this Repo

@pnpm/read-importer-manifest
Read an importer manifest (called package.json in most cases)
Latest release 1.0.1 - Updated - 5.86K stars
@pnpm/lockfile-types
Types for the pnpm-lock.yaml lockfile
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/lockfile-utils
Utils for dealing with pnpm-lock.yaml
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/list
List installed packages in a symlinked `node_modules`
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/lockfile-file
Read/write pnpm-lock.yaml files
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/fetch
node-fetch with retries
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/filter-lockfile
Filters a lockfile
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/constants
pnpm constants
Latest release 1.0.0-0 - Published - 5.86K stars
@pnpm/npm-registry-agent
HTTP agent for fetching from npm registry
Latest release 1.0.0-0 - Published - 5.86K stars
@pnpm/package-is-installable
Checks if a package is installable on the current system
Latest release 2.0.0-0 - Updated - 5.86K stars
@pnpm/shrinkwrap-types
Types for the store controller
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/shrinkwrap-utils
Utils for dealing with shrinkwrap.yaml
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/prune-shrinkwrap
Prune a shrinkwrap.yaml
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/read-modules-dir
Finds all direct packages in node_modules
Latest release 1.0.0 - Published - 5.86K stars
@pnpm/store-controller-types
Types for the store controller
Latest release 1.1.0 - Updated - 5.86K stars
@pnpm/symlink-dependency
Symlink a dependency to node_modules
Latest release 1.1.0 - Updated - 5.86K stars
@pnpm/shamefully-flatten
Flattening a node_modules created by pnpm
Latest release 1.0.4 - Updated - 5.86K stars
@pnpm/read-manifests
Read manifests of importers
Latest release 1.0.2 - Updated - 5.86K stars
@pnpm/package-store
A storage for packages
Latest release 1.2.1 - Updated - 5.86K stars
@pnpm/resolve-dependencies
Resolves dependency graph of a package
Latest release 2.0.0 - Updated - 5.86K stars

Recent Tags See all

v3.4.1 May 22, 2019
v3.4.0 May 21, 2019
v3.4.0-0 May 18, 2019
v3.3.4 May 18, 2019
v3.3.3 May 15, 2019
v3.3.2 May 14, 2019
v3.3.1 May 11, 2019
v3.3.0 May 08, 2019
v3.3.0-2 May 07, 2019
v3.3.0-1 May 06, 2019
v3.3.0-0 May 04, 2019
v3.2.0 April 25, 2019
v3.2.0-1 April 24, 2019
v3.2.0-0 April 21, 2019
v3.1.1 April 13, 2019

Something wrong with this page? Make a suggestion

Last synced: 2019-05-22 21:51:35 UTC

Login to resync this repository