如何获取ES6和TypeScript代码的导入关系图?
导入关系提取工具方案
以下工具均支持提取ES6/TypeScript文件的导入关系,可输出DOT、JSON等机器可读格式:
同时支持ES6和TypeScript的通用工具
dependency-cruiser
目前应用最广的前端依赖分析工具,原生兼容ES6、TypeScript、JSX、TSX语法,可识别所有标准ESM导入语句,也兼容CommonJS、AMD等其他模块规范。内置对TypeScript的完整支持,会自动读取项目tsconfig.json配置,可正确解析路径别名、类型导入等TS特有语法。
支持直接输出JSON、DOT格式,也支持自定义过滤规则,可排除node_modules第三方依赖、测试文件等不需要纳入分析的内容。
基础用法:
输出JSON格式:npx dependency-cruiser src/entry.ts --output-type json > dependencies.json
输出DOT格式:npx dependency-cruiser src/entry.js --output-type dot > dependencies.dotts-morph
基于TypeScript官方编译器API封装的上层工具,适合有自定义分析需求的场景。你可以通过编写简单脚本遍历目标文件的AST节点,自主提取导入源、导入符号、导入类型等信息,自行组装为JSON、DOT格式输出,灵活度极高,可覆盖所有TS/ES6特殊导入场景。
核心逻辑参考:初始化项目实例后调用getSourceFile方法获取目标文件的AST结构,调用getImports()方法即可获取该文件所有导入语句的完整信息。
仅适用于ES6的轻量方案
如果只需要处理纯ES6 JavaScript文件,可选用以下更轻量的工具:
es-module-lexer
Rollup官方团队开发的高性能ESM解析器,体积小、解析速度远高于完整AST解析工具,仅针对标准ES模块语法设计,不需要完整编译环境。你可以基于它编写轻量脚本,快速提取导入关系后输出为JSON或DOT格式。madge
轻量依赖可视化工具,原生支持ES6模块解析,可直接输出JSON、DOT格式,也支持直接生成可视化图片,纯ES6项目无需额外配置即可使用。
基础用法:
输出JSON格式:npx madge src/entry.js --json > dependencies.json
输出DOT格式:npx madge src/entry.js --dot > dependencies.dot
内容的提问来源于stack exchange,提问作者sdgfsdh
相关产品推荐
相关产品推荐

