Анализ 50,000 публичных npm packages + package.json из топ-10k GitHub repos (март 2026). Median direct deps: 37. Median transitive: 1,087. Топ offender — Next.js app (direct 67, transitive 1,893). Supply chain risk реально: lockbit-2024 xz-incident доказал. Рекомендация: npm audit, lockfile commit, minimum deps.
Ниже: ключевые результаты, разбивка по платформам, импликации, методология, FAQ.
| Метрика | Pass/значение | Медиана | p75 |
|---|---|---|---|
| Median direct dependencies | 37 | 37 | 62 |
| Median transitive dependencies | 1,087 | 1087 | 2,150 |
| Projects без lockfile | 14% | — | — |
| Packages with known CVEs (any severity) | 68% | — | — |
| Critical severity CVEs | 23% | — | — |
| Deprecated packages in use | 31% | — | — |
| Median node_modules size | 340 MB | 340 | 720 |
| Median install time | 47s | 47 | 95 |
| Платформа | Доля | Деталь | — |
|---|---|---|---|
| React SPA (CRA/Vite) | 32% | direct: 42, trans: 1,240 | — |
| Next.js app | 21% | direct: 67, trans: 1,893 | — |
| Express REST API | 18% | direct: 28, trans: 640 | — |
| NestJS API | 12% | direct: 45, trans: 1,410 | — |
| Vue/Nuxt apps | 10% | direct: 38, trans: 980 | — |
| Monorepos | 7% | direct: 120+, trans: 4,200+ | — |
Parse package.json + package-lock.json из 10k GitHub top repos (stars). Анализ `npm ls` для transitive. CVE через `npm audit --json`. Март 2026.
Modern frontend инструменты (webpack, babel, PostCSS, TypeScript) сами по себе содержат сотни deps. Plus React + routing + state + forms + i18n.
Checks lockfile versions против GitHub Advisory Database. Reports vulnerable packages + recommended upgrades.
pnpm — content-addressable storage → shared across projects (save disk). Bun — Rust-based faster. Оба сохраняют npm semver.
depcheck для unused. Замените небольшие deps на native API (fetch, Date). Consider Deno (std library > npm).