Cơ BảnBuild Tools iconBuild Tools

pnpm khác npm và yarn như thế nào?

pnpm dùng content-addressable store: mỗi package version lưu một lần trong global store (~/.pnpm-store), tất cả projects symlink đến store — tiết kiệm disk đáng kể (100 projects dùng React chỉ lưu 1 copy). node_modules structure: pnpm tạo non-flat node_modules — mỗi package chỉ thấy dependencies được khai báo trong package.json của nó (strict mode).

  • Phantom dependencies: npm/yarn hoist packages lên root node_modules, code có thể import packages không khai báo trong dependencies — chạy được locally nhưng fail ở nơi khác; pnpm strict mode ngăn phantom deps bằng cách không hoist.
  • Workspace protocol: pnpm-workspace.yaml khai báo workspace packages; 'my-lib': 'workspace:*' trong dependencies để ref local packages — pnpm tự resolve khi install, thay bằng version thật khi publish.
  • Performance: pnpm nhanh hơn npm vì hardlinks, parallel installs; tương đương hoặc nhanh hơn Yarn.
  • Strict mode có thể break legacy code dùng phantom deps — dùng shamefully-hoist: true hoặc .npmrc để workaround. pnpm ngày càng phổ biến cho monorepos (Turborepo + pnpm là stack phổ biến).

Xem toàn bộ Build Tools cùng filter theo level & chủ đề con.

Mở danh sách Build Tools