- pnpm 11 Release Candidate đã có mặt: yêu cầu Node.js 22+, phân phối thuần ESM, bật sẵn minimumReleaseAge 1 ngày để chặn supply-chain attack, và thay store JSON bằng index SQLite v11.
- Daniel Curtis vừa tổng hợp trên InfoQ — dưới đây là toàn cảnh những gì thay đổi và vì sao nó quan trọng.
TL;DR
pnpm 11.0.0-rc.0 vừa công bố tháng 4/2026, được InfoQ điểm qua bởi Daniel Curtis. Ba điểm nóng: (1) pnpm giờ là pure ESM và chỉ chạy trên Node.js 22+; (2) phòng thủ supply-chain bật mặc định — minimumReleaseAge = 1 ngày và blockExoticSubdeps = true; (3) store index chuyển sang SQLite v11 thay cho hàng loạt file JSON, giảm mạnh syscall và tăng tốc install. Cài thử: pnpm self-update next-11.
What's new
Bản v11 là lần đầu pnpm xả toàn bộ hành trang legacy để thẳng tiến ESM và đóng gói mặc định quanh giả định bảo mật mới. Điểm nhấn từ release notes v11.0.0-rc.0:
- Pure ESM: binary pnpm và runtime đều ESM. Module type mặc định chuyển sang ES modules.
- Node 22+ bắt buộc: drop hoàn toàn Node 18, 19, 20, 21. Standalone exe yêu cầu glibc 2.27+.
- Store v11 SQLite: package index dùng SQLite thay cho nhiều file JSON rời, hỗ trợ concurrent access qua WAL mode, bundle manifest sẵn trong index, lưu hex digest thay integrity string đầy đủ.
- allowBuilds thay thế 5 setting cũ (
onlyBuiltDependencies,onlyBuiltDependenciesFile,neverBuiltDependencies,ignoredBuiltDependencies,ignoreDepScripts).strictDepBuildscũng mặc định bật. - Global install cách ly: mỗi
pnpm add -gcó thư mục riêng vớipackage.json,node_modules, lockfile riêng. Global virtual store bật sẵn. - Command mới:
pnpm ci,pnpm sbom,pnpm clean,pnpm peers check,pnpm runtime set. Alias ngắn:pnvàpnx. - ESM pnpmfile: hỗ trợ
.pnpmfile.mjs, ưu tiên hơn.pnpmfile.cjs.
Why it matters
pnpm 11 đáp thẳng vào ba áp lực thực tế của ecosystem JS năm 2026: chuỗi sự cố supply-chain đầu 2026 (Axios bị compromise, Shai-Hulud worm lan rộng), ngưỡng ESM-only của ecosystem Node, và chi phí I/O của package store dùng hàng trăm nghìn file JSON trên monorepo lớn. Thay vì để user tự tra docs và bật cờ, pnpm chuyển an toàn từ opt-in sang opt-out — một quyết định có tính chính trị kỹ thuật rõ ràng.
Với team đang chạy monorepo 50+ workspace, store v11 là bản vá lâu chờ: index JSON cũ buộc filesystem phải mở/đọc/đóng hàng nghìn file mỗi lần resolve graph. SQLite WAL cho phép nhiều process cùng đọc index song song — một điểm đau cụ thể với CI chạy pnpm install matrix. Còn phía cấu hình, việc đá npm_config_* khỏi nguồn config chính thức là phản ứng với giới hạn npm đặt ra cho tool bên thứ ba — pnpm tách đường sống riêng.
Technical facts
| Hạng mục | pnpm 10 | pnpm 11 RC |
|---|---|---|
| Node.js tối thiểu | Node 18+ | Node 22+ |
| Module format | CJS | Pure ESM |
| Store index | File JSON rời | SQLite v11 (WAL, hex digest) |
| minimumReleaseAge | Không có mặc định | 1 ngày (bật sẵn) |
| blockExoticSubdeps | false | true |
| strictDepBuilds | false | true |
| Build approval | 5 setting rời rạc | 1 setting allowBuilds |
| Cấu hình chính | .npmrc + package.json | pnpm-workspace.yaml (YAML) |
| Env prefix | npm_config_* | pnpm_config_* |
| Global install | Shared | Cách ly per-package |
Về hiệu năng đường HTTP, pnpm chuyển sang undici với Happy Eyeballs, ghi thẳng vào store (bỏ staging directory), pre-allocate tarball download, và dùng NDJSON cho metadata cache. Những thay đổi này cộng dồn lại giúp pnpm install trên cold cache giảm syscall đáng kể nhờ SQLite index.
Use cases
- Monorepo lớn: store v11 giảm chi phí fs khi có hàng chục workspace chia sẻ dependency.
- Team bảo mật: mặc định minimumReleaseAge chặn phần lớn kịch bản supply-chain chèn version độc mới publish — cho cộng đồng thời gian detect và takedown.
- CI/CD:
pnpm cicho clean install xác định,pnpm sbomxuất software bill of materials phục vụ compliance (SLSA, SBOM mandate). - Global CLI tools: cài CLI toàn cục không còn dẫm chân nhau về peer dep nữa.
Limitations & pricing
pnpm 11 vẫn miễn phí, MIT license. Chi phí upgrade là chi phí migration:
- Phải nâng Node lên v22+. Dự án còn trên LTS 20 sẽ bị chặn.
- Config phải di chuyển khỏi
.npmrcvà fieldpnpmtrongpackage.jsonsangpnpm-workspace.yaml. Script CI đọcnpm_config_*phải đổi sangpnpm_config_*. - Các setting bị bỏ (
allowNonAppliedPatches,ignorePatchFailures,useNodeVersion,pnpm server) sẽ fail nếu còn tham chiếu. - Default
minimumReleaseAge = 1 daycó tác dụng phụ: nếu team cần install version vừa publish trong 24h, phải override bằngminimumReleaseAgeExclude. - Standalone binary cần glibc 2.27+ — loại trừ các distro cũ như CentOS 7, Ubuntu 16.04.
- Đây là RC chưa stable (
v11.0.0-rc.0, đã córc.1), chưa khuyến nghị production.
What's next
Sau vòng RC feedback, pnpm sẽ tung stable v11.0.0. Team đang chuẩn bị codemod hỗ trợ migrate config tự động từ .npmrc/package.json sang YAML. Roadmap còn lại: tiếp tục vi chỉnh undici/HTTP, mở rộng hệ sinh thái ESM pnpmfile, và giám sát thực địa hiệu quả của supply-chain defaults sau các sự cố npm đầu năm 2026.
Muốn thử ngay: pnpm self-update next-11. Nguồn: InfoQ — pnpm 11 RC Release, GitHub release notes v11.0.0-rc.0, pnpm v11 discussion #9238, pnpm docs — Supply chain security.
