sverklo
D
Overall Health
vitejs/vite
https://github.com/vitejs/vite
2026-04-19 00:20:28
C
Dead code
20% orphan symbols (234/1193)
F
Circular deps
44 cycles detected
F
Coupling
max fan-in: 68 (packages/vite/src/node/utils.ts)
D
Security
4 concerns found

Overview

  • 1440 files indexed
  • 2958 code symbols extracted
  • 17345 symbol references tracked
  • 0 active memories (0 core, 0 stale)
  • Languages: javascript (881), typescript (559)

God Nodes (most-referenced symbols)

These are the symbols your codebase depends on most. Changes here have the largest blast radius.

  • resolve — 371 references
  • get — 178 references
  • getColor — 164 references
  • add — 109 references
  • defineConfig — 106 references
  • editFile — 105 references
  • normalizePath — 91 references
  • getBg — 82 references
  • err — 75 references
  • readFile — 65 references

Hub Files (highest PageRank)

Core architectural files — imported by many others.

  • packages/vite/src/node/utils.ts (1.00)
  • packages/vite/src/shared/constants.ts (0.79)
  • packages/vite/src/shared/utils.ts (0.68)
  • packages/vite/src/node/constants.ts (0.44)
  • playground/html/inline/common.js (0.35)
  • playground/multiple-entrypoints/entrypoints/a24.js (0.31)
  • playground/hmr/self-accept-within-circular/b.js (0.23)
  • playground/hmr-ssr/self-accept-within-circular/b.js (0.23)
  • packages/vite/src/node/packages.ts (0.23)
  • playground/hmr/self-accept-within-circular/c.js (0.22)

Orphans (potential dead code)

Named functions with zero detected references. Could be dead code, public API exports, or referenced dynamically.

  • servePublicMiddlewarepackages/vite/src/node/server/middlewares/static.ts:80
  • serveStaticMiddlewarepackages/vite/src/node/server/middlewares/static.ts:124
  • serveRawFsMiddlewarepackages/vite/src/node/server/middlewares/static.ts:201
  • isFileServingAllowedpackages/vite/src/node/server/middlewares/static.ts:249
  • thatplayground/multiple-entrypoints/entrypoints/a16.js:10
  • hostValidationMiddlewarepackages/vite/src/node/server/middlewares/hostCheck.ts:46
  • thatplayground/multiple-entrypoints/entrypoints/a15.js:11
  • shouldExternalizepackages/vite/src/node/external.ts:22
  • NestedTypeOnlyClassplayground/tsconfig-json/nested/not-used-type.ts:3
  • NestedWithExtendsTypeOnlyClassplayground/tsconfig-json/nested-with-extends/not-used-type.ts:3

Coupling (high-PageRank files)

  • packages/vite/src/node/utils.ts (1.00)
  • packages/vite/src/shared/constants.ts (0.79)
  • packages/vite/src/shared/utils.ts (0.68)
  • packages/vite/src/node/constants.ts (0.44)
  • playground/html/inline/common.js (0.35)

Circular Dependencies (44 cycles)

  1. packages/vite/src/node/packages.ts -> packages/vite/src/node/utils.ts -> packages/vite/src/node/packages.ts
  2. playground/html/inline/common.js -> playground/html/inline/dep1.js -> playground/html/inline/common.js
  3. playground/html/inline/common.js -> playground/html/inline/dep2.js -> playground/html/inline/common.js
  4. playground/hmr/self-accept-within-circular/b.js -> playground/hmr/self-accept-within-circular/c.js -> playground/hmr/self-accept-within-circular/b.js
  5. playground/hmr-ssr/self-accept-within-circular/b.js -> playground/hmr-ssr/self-accept-within-circular/c.js -> playground/hmr-ssr/self-accept-within-circular/b.js
  6. playground/hmr/circular/mod-a.js -> playground/hmr/circular/mod-b.js -> playground/hmr/circular/mod-c.js -> playground/hmr/circular/mod-a.js
  7. playground/hmr-ssr/circular/mod-a.js -> playground/hmr-ssr/circular/mod-b.js -> playground/hmr-ssr/circular/mod-c.js -> playground/hmr-ssr/circular/mod-a.js
  8. playground/hmr/invalidation-circular-deps/circular-invalidate/child.js -> playground/hmr/invalidation-circular-deps/circular-invalidate/parent.js -> playground/hmr/invalidation-circular-deps/circular-invalidate/child.js
  9. playground/hmr/invalidation-circular-deps/invalidate-handled-in-circle/child.js -> playground/hmr/invalidation-circular-deps/invalidate-handled-in-circle/parent.js -> playground/hmr/invalidation-circular-deps/invalidate-handled-in-circle/child.js
  10. playground/hmr-ssr/invalidation-circular-deps/circular-invalidate/child.js -> playground/hmr-ssr/invalidation-circular-deps/circular-invalidate/parent.js -> playground/hmr-ssr/invalidation-circular-deps/circular-invalidate/child.js
  11. playground/hmr-ssr/invalidation-circular-deps/invalidate-handled-in-circle/child.js -> playground/hmr-ssr/invalidation-circular-deps/invalidate-handled-in-circle/parent.js -> playground/hmr-ssr/invalidation-circular-deps/invalidate-handled-in-circle/child.js
  12. playground/ssr/src/forked-deadlock/deadlock-fuse-module.js -> playground/ssr/src/forked-deadlock/fuse-stuck-bridge-module.js -> playground/ssr/src/forked-deadlock/stuck-module.js -> playground/ssr/src/forked-deadlock/middle-module.js -> playground/ssr/src/forked-deadlock/deadlock-fuse-module.js
  13. packages/vite/src/node/build.ts -> packages/vite/src/node/config.ts -> packages/vite/src/node/build.ts
  14. packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
  15. packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/optimizedDeps.ts -> packages/vite/src/node/optimizer/index.ts
  16. packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/server/hmr.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts
  17. packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/server/hmr.ts -> packages/vite/src/node/plugins/importAnalysis.ts
  18. packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/server/hmr.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts
  19. packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/server/hmr.ts -> packages/vite/src/node/server/index.ts -> packages/vite/src/node/config.ts -> packages/vite/src/node/build.ts
  20. packages/vite/src/node/external.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/external.ts
  21. packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/optimizer/index.ts
  22. packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/build.ts
  23. packages/vite/src/node/idResolver.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/idResolver.ts
  24. packages/vite/src/node/idResolver.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/idResolver.ts
  25. packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/nodeResolve.ts
  26. packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/plugins/html.ts -> packages/vite/src/node/build.ts
  27. packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/plugins/html.ts -> packages/vite/src/node/plugins/asset.ts -> packages/vite/src/node/build.ts
  28. packages/vite/src/node/plugins/css.ts -> packages/vite/src/node/plugins/html.ts -> packages/vite/src/node/plugins/css.ts
  29. packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
  30. packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/worker.ts -> packages/vite/src/node/build.ts
  31. packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/preAlias.ts -> packages/vite/src/node/optimizer/index.ts
  32. packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/importAnalysis.ts -> packages/vite/src/node/plugins/preAlias.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
  33. packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/wasm.ts -> packages/vite/src/node/build.ts
  34. packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/workerImportMetaUrl.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
  35. packages/vite/src/node/build.ts -> packages/vite/src/node/plugins/terser.ts -> packages/vite/src/node/nodeResolve.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/assetImportMetaUrl.ts -> packages/vite/src/node/plugins/importAnalysisBuild.ts -> packages/vite/src/node/build.ts
  36. packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/scan.ts -> packages/vite/src/node/server/pluginContainer.ts -> packages/vite/src/node/plugins/index.ts -> packages/vite/src/node/plugins/assetImportMetaUrl.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
  37. packages/vite/src/node/optimizer/index.ts -> packages/vite/src/node/optimizer/rolldownDepPlugin.ts -> packages/vite/src/node/plugins/resolve.ts -> packages/vite/src/node/optimizer/index.ts
  38. packages/vite/src/node/config.ts -> packages/vite/src/node/server/index.ts -> packages/vite/src/node/config.ts
  39. packages/vite/src/node/server/middlewares/transform.ts -> packages/vite/src/node/server/transformRequest.ts -> packages/vite/src/node/server/middlewares/transform.ts
  40. packages/vite/src/node/config.ts -> packages/vite/src/node/preview.ts -> packages/vite/src/node/server/index.ts -> packages/vite/src/node/config.ts
  41. packages/vite/src/node/config.ts -> packages/vite/src/node/preview.ts -> packages/vite/src/node/shortcuts.ts -> packages/vite/src/node/server/index.ts -> packages/vite/src/node/config.ts
  42. packages/vite/src/node/config.ts -> packages/vite/src/node/preview.ts -> packages/vite/src/node/config.ts
  43. packages/vite/src/node/config.ts -> packages/vite/src/node/ssr/runnerImport.ts -> packages/vite/src/node/config.ts
  44. playground/ssr/src/forked-deadlock/dynamic-imports/deadlock-fuse-module.js -> playground/ssr/src/forked-deadlock/dynamic-imports/fuse-stuck-bridge-module.js -> playground/ssr/src/forked-deadlock/dynamic-imports/stuck-module.js -> playground/ssr/src/forked-deadlock/dynamic-imports/middle-module.js -> playground/ssr/src/forked-deadlock/dynamic-imports/deadlock-fuse-module.js

Security Issues (4 found)

Critical (2)

  • API tokenpackages/vite/src/node/utils.ts:1626
  • process.env.npmconfiguser_agent?.split(' ')[0].split('/')[0] || 'npm'
  • API tokenpackages/create-vite/src/index.ts:460
  • const pkgInfo = pkgFromUserAgent(process.env.npmconfiguser_agent)

High (2)

  • new Function() usagepackages/vite/src/node/utils.ts:1595
  • const fn = new Function(`
  • new Function() usagepackages/vite/src/node/ssr/ssrStacktrace.ts:13
  • new Function('throw new Error(1)')()

Suggested Next Steps

  • Before refactoring resolve, run sverklo_impact to see the 371 call sites
  • packages/vite/src/node/utils.ts is your most-imported file — changes here cascade widely
  • 15+ potential orphans detected — audit for dead code