@ebowwa/dependency-graph
v1.0.2
Published
Core dependency graph analysis and visualization for monorepos
Maintainers
Readme
@ebowwa/dependency-graph
Core dependency graph analysis and visualization for monorepos.
Installation
bun add @ebowwa/dependency-graph
# or
npm install @ebowwa/dependency-graphUsage
import {
DependencyGraphBuilder,
formatGraph,
analyzeImpact,
findCircularDependencies,
findUnusedPackages,
getPackageInfo
} from '@ebowwa/dependency-graph';
// Build the graph
const builder = new DependencyGraphBuilder('/path/to/monorepo');
const graph = await builder.build({
includeDevDependencies: false,
analyzeImports: true,
excludePatterns: ['^@types/', '^@eslint/']
});
// Format as Mermaid diagram
const mermaid = formatGraph(graph, 'mermaid');
// Format as ASCII tree
const tree = formatGraph(graph, 'tree');
// Find circular dependencies
const cycles = findCircularDependencies(graph, 10);
// Analyze impact of changing a package
const impact = analyzeImpact(graph, '@ebowwa/terminal', true);
console.log(`Direct: ${impact.direct}`);
console.log(`Transitive: ${impact.transitive}`);
// Find unused packages
const unused = findUnusedPackages(graph);
// Get package info
const info = getPackageInfo(graph, '@ebowwa/ssh');API
DependencyGraphBuilder
Builds dependency graphs from package.json and import analysis.
const builder = new DependencyGraphBuilder(monorepoRoot);
const graph = await builder.build(options);Options:
includeDevDependencies- Include devDependencies (default: false)analyzeImports- Analyze TypeScript/JavaScript imports (default: true)excludePatterns- Regex patterns to exclude (default: [])
Formatters
formatGraph(graph, format)- Format graph (json, mermaid, dot, tree)formatAsJson(graph)- JSON outputformatAsMermaid(graph)- Mermaid diagramformatAsDot(graph)- Graphviz DOT formatformatAsTree(graph)- ASCII tree visualization
Analysis
findCircularDependencies(graph, maxDepth)- Find dependency cyclesanalyzeImpact(graph, packageName, includeTransitive)- Impact analysisfindUnusedPackages(graph, includeExternal)- Find packages with no dependentsgetPackageInfo(graph, packageName)- Get detailed package infogetWorkspacePackages(graph)- Get all workspace packagesgetExternalDependencies(graph)- Get all external dependencies
License
MIT
