0.0.1 • Published 2 years ago
glob-esm-graph v0.0.1
glob-esm-graph
Match files by glob pattern and generate their dependencies graph.
Install
npm install glob-esm-graph
# or
yarn add glob-esm-graph
# or
pnpm install glob-esm-graph
API
globMatch
type Options = {
/**
* The current working directory in which to search.
*/
cwd: string,
/**
* Glob patterns to match against.
*/
pattern: string | string[],
}
declare function globMatch (options: Options): string[]
Input the work dir and the glob pattern(s), returns the matched files in under dependent modules.
analyze
type DependenciesAnalysis = { module: string, dependencies: string[]}
declare function analyze(entries: string[], cwd: string): Promise<DependenciesAnalysis[]>
Input the esm format files as entries and the work dir, returns the analysis which contain the module info and their dependencies info.
buildGraph
type Graph = {
getNodes: () => string[],
getEdges: () => [from: string, to: string][],
getEntryNodes: () => string[],
getEndNodes: () => string[],
getPaths: () => string[][],
getCircular: () => string[][],
getSortedByDependencies: () => string[][],
}
declare function buildGraph (dependenciesAnalysis: DependenciesAnalysis[]): Graph
Input the dependencies analysis comes from
analyze
, returns the graph stats.
getPaths
doesn't contains circular pathsgetSortedByDependencies
will sort the dependencies which are related and keep the other's original order. The sorting priority accords to dependent depth in the graph.
Usage
import { globMatch, analyze, buildGraph } from 'glob-esm-graph'
const cwd = `${__dirname}/foo-test`
const pattern = '**/*.module.ts'
const matched = globMatch({ cwd, pattern })
const dependenciesAnalysis = await analyze(matched, cwd)
const graph = buildGraph(dependenciesAnalysis)
0.0.1
2 years ago