Visualize your node_modules, inspect dependencies, and more.
Try it by running following command under your pnpm/npm/bun project.
pnpx node-modules-inspectornpx node-modules-inspectorbunx node-modules-inspectorCurrently supports
pnpm,npm, andbunprojects. We are counting on the community to bring support for other package managers.
You can also try an online version at node-modules.dev, powered by WebContainer.
You can create a node-modules-inspector.config.ts file in your project root to configure the inspector's default behaviour.
import { defineConfig } from 'node-modules-inspector'
export default defineConfig({
defaultFilters: {
excludes: [
'eslint',
],
},
defaultSettings: {
moduleTypeSimple: true,
},
// Experimental publint.dev integration, default is false
publint: true
// ...see jsdoc for more options and details
})You can also build a static SPA of your current node_modules status:
pnpx node-modules-inspector buildnpx node-modules-inspector buildbunx node-modules-inspector buildThen you can host the .node-modules-inspector folder with any static file server.
You can see a build for all Anthony Fu's packages at everything.antfu.dev.
In addition to the web UI, the inspector exposes three machine-readable reports designed for shell pipelines and AI coding agents:
npx node-modules-inspector report duplicates # packages installed in multiple versions
npx node-modules-inspector report sizes # packages sorted by install size
npx node-modules-inspector report maintainers # dep-upgrade opportunities + publint, grouped by consumer/authorEach command renders a pretty ANSI table by default. Add --json to emit JSON to stdout — progress logs go to stderr, so output is pipe-safe:
npx node-modules-inspector report duplicates --json | jq '.[].name'
npx node-modules-inspector report sizes --json --limit 10
npx node-modules-inspector report maintainers --json --sort migration --no-latest-onlyCommon options across all reports: --root <dir>, --config <file>, --depth <n>, --limit <n>. Run node-modules-inspector report --help for the full per-report flag set.
The same three reports are exposed as MCP tools for AI coding agents. Start the server over stdio:
npx node-modules-inspector mcpTools exposed:
nmi:report-duplicatesnmi:report-sizesnmi:report-maintainers
Input/output JSON Schemas are auto-derived from the underlying valibot definitions and surfaced via tools/list. Wire it into Claude Code (or any MCP-compatible client) by adding node-modules-inspector mcp as a stdio server in your MCP config.
Note
An agent skill lives at skills/node-modules-inspector/SKILL.md (repo root) and is copied into the published tarball at <pkg>/skills/ during prepack. If your project uses skills-npm, the skill is automatically symlinked into your agent's skill directory after pnpm install.
- This project is heavily inspired by npmgraph
- Thanks to @wooorm for the module type detection algorithm in wooorm/npm-esm-vs-cjs
- The logo is derivated from the
black-hole-line-duotoneicon (yeah it's a black hole!) from the Solar Icon Sets by 480 Design and R4IN80W under the CC-BY 4.0 license. - Thanks to @privatenumber for pkg-size.dev for running analysis with installations in WebContainer.
MIT License © Anthony Fu


