乐闻世界logo
搜索文章和话题

What is pnpm and how does it differ from npm and Yarn?

3月6日 23:38

pnpm (Performant npm) is a fast, disk-space efficient JavaScript package manager.

Key Differences:

  1. Storage Mechanism

    • pnpm: Uses content-addressable storage, all packages stored in global store, referenced via hard links in projects
    • npm/Yarn: Each project copies its own node_modules, consuming significant disk space
  2. Installation Speed

    • pnpm: Extremely fast on subsequent installs due to hard linking
    • npm/Yarn: Requires re-downloading or copying files each time
  3. Dependency Structure

    • pnpm: Uses non-flat node_modules structure, creates strict dependency trees via symlinks
    • npm/Yarn: Uses flat structure, may cause "phantom dependencies" issues
  4. Disk Space

    • pnpm: Multiple projects share the same packages, saving 70%+ disk space
    • npm/Yarn: Each project stores independently, duplicating space usage

Example Comparison:

bash
# npm install npm install lodash # node_modules contains complete lodash copy # pnpm install pnpm add lodash # node_modules contains only hard link to global store

Advantages Summary:

  • Faster installation speed
  • Less disk usage
  • Stricter dependency management, avoiding phantom dependencies
  • Better monorepo support
标签:PNPM