</>
⌕
Junior #npm#yarn#pnpm#package-manager

So sánh npm, Yarn và pnpm

⚡ Trả lời nhanh

Cả ba cài package từ registry npm. pnpm dùng content-addressable store và hard link nên nhanh, tiết kiệm đĩa và chặn phantom dependency nhờ node_modules nghiêm ngặt. Yarn Berry có Plug'n'Play và workspaces. npm là mặc định đi kèm Node.

npmYarnpnpm
Lockfilepackage-lock.jsonyarn.lockpnpm-lock.yaml
Lưu trữCopy vào từng projectCopy hoặc PnP (Berry)Store chung toàn máy + hard link
node_modulesPhẳng (hoisted)Phẳng hoặc không có (PnP)Cấu trúc symlink, không hoist mặc định
Monorepoworkspacesworkspacespnpm-workspace.yaml, rất mạnh
CInpm ciyarn install --immutablepnpm install --frozen-lockfile

Phantom dependency: với node_modules phẳng, code có thể require được package không khai báo trong package.json (do bị hoist), rồi hỏng khi cấu trúc cây thay đổi. pnpm ngăn điều này.

🃏 Ôn bằng flashcard