FIT VERDICTnode_modules surveyed — 32 delivered packages, 273× the app that installs them
the DELIVERED CITY
ALTITUDE 1½ — what npm actually installs for one consumer · sample-app-lit-vanilla · 32 delivered packages, 176,451 lines of code and 41,786 d.ts lines on disk, footprint from files and height from lines — measured at origin/main @ eb1162da (2026-10-18), closure of apps/sample-app-lit-vanilla
GENERAL NOTES
Method: the production closure of apps/ (dependencies plus installed peers — pnpm auto-installs peers, so they are genuinely on disk), resolved through the pnpm store and measured as delivered: lines of .js/ per package directory, source maps and prose excluded, .d.ts drawn separately as the hatched annex. Workspace-linked members are measured by their built dist/ — the shape a registry install would deliver. Plenty of prior art measures this differently — bundlephobia and packagephobia weigh tarballs and install bytes, npmgraph draws the dependency graph — but this sheet measures what actually lands on disk, in files and lines, and stages it as a city with the consumer's own building standing in it for scale. Every count on the drawing and in these notes is read at build time from the plate www/ — measured at origin/main @ eb1162da (2026-10-18), closure of apps/sample-app-lit-vanilla — written after installing and building the ref itself, never the working tree. A package the drawing places that the plate does not carry, or a package the plate carries that no district draws, is a build error rather than a stale constant.
The consumer is a doormat in its own city. The app brings 646 lines of its own and receives 176,451 delivered lines of code plus 41,786 of type declarations — 273× its own mass. The router this repo exists to ship, lit-ui-router, delivers 3,286 lines over 44 files: one of the smaller buildings on the skyline it anchors, and 54× smaller than the city it stands in.
Four imports, 22,193 lines. lodash-es is delivered whole — 22,193 lines across 644 files — so the app can call isEqual, cloneDeep, get and set. The bundler tree-shakes almost all of it away, and sheet 9 charts what survives to the wire; the delivered city is the other measure, the one that installs, audits and updates. It is the fourth-tallest building here, behind dompurify, hono and @uirouter/.
One lit, and a server in a client demo. Scoped pnpm overrides (@api-viewer/docs>lit, @api-viewer/common>lit, lit-dialog>lit → ^3.3.3) hold the demo chrome to one lit major, so lit, lit-html, lit-element and @lit/ each stand once in this city. The oddest building is hono at 25,081 lines: ui-router-server names it a peer, so peer auto-install delivers a server framework into a client demo.
Note the vertical scale: 1 px ≈ 250 lines against sheet 7's ≈ 34. Drawn at the workspace's own scale, lodash-es alone would stand 653 px tall — the compression is the finding.
KEY
| delivered code — height = lines on disk | |
| type declarations (d.ts) annex | |
| lit-ui-router · the consumer | |
| district (how it got here) |