The main dependency tree analysis functionality provides comprehensive dependency mapping with support for circular dependency detection, configurable filtering, and extensive customization options for different module systems and build tools.
function dependencyTree(options: Options): Tree;Returns a Tree object representing the complete dependency structure:
interface TreeInnerNode {
[parent: string]: TreeInnerNode | string;
}
type Tree = TreeInnerNode | string;The tree is a nested object where each key is an absolute file path and the value is either another nested object (subtree) or a string (leaf node).
const dependencyTree = require('dependency-tree');
const tree = dependencyTree({
filename: './src/index.js',
directory: './src'
});
console.log(tree);
// Output:
// {
// '/absolute/path/to/src/index.js': {
// '/absolute/path/to/src/utils.js': {},
// '/absolute/path/to/src/config.js': {
// '/absolute/path/to/src/constants.js': {}
// }
// }
// }const tree = dependencyTree({
filename: './src/index.js',
directory: './src',
filter: (path) => !path.includes('node_modules') // Exclude node_modules
});const tree = dependencyTree({
filename: './src/app.ts',
directory: './src',
tsConfig: './tsconfig.json'
});const tree = dependencyTree({
filename: './src/index.js',
directory: './src',
webpackConfig: './webpack.config.js'
});When analyzing AMD modules, provide a RequireJS config to resolve module aliases:
const tree = dependencyTree({
filename: './app.js',
directory: './js',
requireConfig: './require.config.js'
});Customize AST parsing behavior for different module types:
const tree = dependencyTree({
filename: './src/app.js',
directory: './src',
detectiveConfig: {
amd: {
skipLazyLoaded: true
},
es6: {
mixedImports: true
}
}
});Control how entry points are resolved in node_modules:
const tree = dependencyTree({
filename: './src/app.js',
directory: './src',
nodeModulesConfig: {
entry: 'module' // Use 'module' field instead of 'main'
}
});The function handles various error scenarios gracefully:
{} if the entry file doesn't existnonExistent arrayvisited parameter to cache results across multiple callsconst nonExistent = [];
const tree = dependencyTree({
filename: './src/app.js',
directory: './src',
nonExistent
});
console.log('Missing dependencies:', nonExistent);const tree = dependencyTree({
filename: './src/app.js',
directory: './src',
filter: (filePath, parentPath) => {
// Include only files in src directory
return filePath.includes('/src/') &&
!filePath.includes('test') &&
!filePath.includes('spec');
}
});