pnpm uninstall could not always link the dependency name to the dependency ID (used in the store). To solve this issue, a dependency name to ID map is added to the dependencies section of `store.json`. PR #371 BREAKING CHANGE: The structure of the `store.json` has been changed. Previously the dependencies property contained just a list of dependency IDs. E.g.: ```json { "dependencies": { "math": [ "sum@1.0.0", "@zkochan+max@2.1.0" ] } } ``` With this structure it was hard to link the dependencies to their IDs. The new structure uses a map which links the dependency to its ID: ```json { "dependencies": { "map": { "sum": "sum@1.0.0", "@zkochan/max": "@zkochan+max@2.1.0" } } } ``` Unfortunately the stores created by older version of pnpm are not usable after this breaking change. They have to be removed before using the new version of pnpm.
pnpm
Performant npm installations
pnpm is a fast implementation of npm install. It is loosely based off ied.
Read our contributing guide if you're looking to contribute.
Follow the pnpm Twitter account for updates.
Table of Contents
Background
pnpm maintains a flat storage of all your dependencies in node_modules/.store. They are then symlinked wherever they're needed.
This nets you the benefits of less disk space usage, while keeping your node_modules clean.
See store layout for an explanation.
.
└─ node_modules/
├─ .store/
│ ├─ chalk@1.1.1/_/
│ │ └─ node_modules/
│ │ ├─ ansi-styles -> ../../../ansi-styles@2.1.0/_
│ │ └─ has-ansi -> ../../../has-ansi@2.0.0/_
│ ├─ ansi-styles@2.1.0/_/
│ └─ has-ansi@2.0.0/_/
└─ chalk -> .store/chalk@1.1.1/_
Install
Install it via npm.
npm install -g pnpm
Usage
Use pnpm in place of npm. It overrides pnpm i, pnpm install and some other command, the rest will passthru to npm.
pnpm install lodash
Custom registries
pnpm uses whatever npm's configured to use as its registry. See: custom registries.
Preview release
pnpm will stay in <1.0.0 until it's achieved feature parity with npm install. See roadmap for details.
Benchmark
time npm i babel-preset-es2015 browserify chalk debug minimist mkdirp
66.15 real 15.60 user 3.54 sys
time pnpm i babel-preset-es2015 browserify chalk debug minimist mkdirp
11.04 real 6.85 user 2.85 sys
Prior art
License
MIT © Rico Sta. Cruz and contributors
