# pnpm/pnpm

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/pnpm-pnpm).**

34,093 stars · 1,325 forks · TypeScript · mit

## Links

- GitHub: https://github.com/pnpm/pnpm
- Homepage: https://pnpm.io
- awesome-repositories: https://awesome-repositories.com/repository/pnpm-pnpm.md

## Topics

`dependency-manager` `install` `javascript` `modules` `node` `nodejs` `npm` `package-manager`

## Description

pnpm is a command-line package manager designed to automate the retrieval, installation, and version management of software dependencies. It utilizes a deterministic resolution process and a lockfile to ensure that dependency trees remain consistent across different environments and machines.

The project distinguishes itself through a content-addressable storage engine that saves every version of a package exactly once on the file system. By employing a hard-linking installation strategy and a symlink-based directory structure, it maps dependencies from a central store into individual projects. This approach enforces strict dependency isolation, preventing code from accessing undeclared packages while simultaneously reducing disk usage and accelerating installation times through parallel execution.

Beyond its core installation capabilities, the tool provides built-in support for monorepo workspace orchestration, allowing for the management of multiple interconnected projects within a single repository. It maintains a virtual store layout to ensure a predictable dependency graph across complex project structures.

## Tags

### Development Tools & Productivity

- [Package Managers](https://awesome-repositories.com/f/development-tools-productivity/package-managers.md) — Automates the retrieval, installation, and version management of software dependencies for development projects.
- [Dependency Management Systems](https://awesome-repositories.com/f/development-tools-productivity/dependency-management-systems.md) — Optimizes the installation of project libraries to reduce setup time and ensure consistent builds.
- [Package Installers](https://awesome-repositories.com/f/development-tools-productivity/package-installers.md) — Downloads and links required packages using a multi-stage process to accelerate project setup. ([source](https://pnpm.io/motivation))
- [Dependency Lockfiles](https://awesome-repositories.com/f/development-tools-productivity/dependency-lockfiles.md) — Captures the exact state of the dependency tree to ensure identical installations across different environments.
- [Strict Dependency Resolvers](https://awesome-repositories.com/f/development-tools-productivity/strict-dependency-resolvers.md) — Enforces explicit access to declared packages by preventing unauthorized access to nested dependency trees.
- [Content-Addressable Stores](https://awesome-repositories.com/f/development-tools-productivity/content-addressable-stores.md) — Stores every version of every package exactly once to eliminate redundant data across the file system.
- [Monorepo Orchestration Tools](https://awesome-repositories.com/f/development-tools-productivity/monorepo-orchestration-tools.md) — Manages multiple interconnected projects by linking shared code and dependencies efficiently.
- [Parallel Execution Engines](https://awesome-repositories.com/f/development-tools-productivity/parallel-execution-engines.md) — Multiple dependency resolution and installation tasks run concurrently to maximize throughput during the package setup process.
- [Content-Addressable Storage Engines](https://awesome-repositories.com/f/development-tools-productivity/content-addressable-storage-engines.md) — Saves unique files in a central location to eliminate redundant copies across multiple projects.
- [Dependency Isolation Tools](https://awesome-repositories.com/f/development-tools-productivity/dependency-isolation-tools.md) — Enforces clear boundaries between project packages to prevent accidental usage of undeclared dependencies.
- [Hard-Linking Strategies](https://awesome-repositories.com/f/development-tools-productivity/hard-linking-strategies.md) — Links files from a central store into project folders to provide instant installation without duplicating binary data.
- [Symlink-Based Dependency Management](https://awesome-repositories.com/f/development-tools-productivity/symlink-based-dependency-management.md) — Organizes project files using symbolic links to ensure only declared dependencies remain accessible. ([source](https://pnpm.io/motivation))
- [Hard-Linking Installation Strategies](https://awesome-repositories.com/f/development-tools-productivity/hard-linking-installation-strategies.md) — Maps project dependencies to a shared global store to accelerate installation and reduce storage footprint.
- [Disk Space Management](https://awesome-repositories.com/f/development-tools-productivity/disk-space-management.md) — Saves storage by keeping shared packages in a single central location using hard links. ([source](https://pnpm.io/motivation))

### Software Engineering & Architecture

- [Dependency Isolation Strategies](https://awesome-repositories.com/f/software-engineering-architecture/dependency-isolation-strategies.md) — A nested directory structure uses symbolic links to strictly enforce dependency boundaries and prevent access to undeclared packages.

### Data & Databases

- [Virtual Store Layouts](https://awesome-repositories.com/f/data-databases/virtual-store-layouts.md) — A hidden directory acts as the single source of truth for all installed packages to maintain a predictable and flat dependency graph.
