用于从 .xcodeproj 生成模块依赖关系图的 Swift 工具
这是什么?
XcodeTargetGraphGen 是一个 Swift 命令行工具,它解释.xcodeproj
文件以使用美人鱼图语法创建模块级内部依赖关系的可视化描述。通过支持多个包管理器,它使用户能够直观地绘制出 Xcode 项目在各种环境中的结构和依赖关系,为这些关系提供清晰易懂的图形表示。
支持的包管理器如下:
- 斯威夫特包管理器
- 迦太基
- CocoaPods(只支持不使用.xcfilelist 的旧格式)
安装中
斯威夫特包管理器
用作 CLI
git clone https://github.com/CuriositySoftware/XcodeTargetGraphGen.git
cd XcodeTargetGraphGen
swift run xcgraphgen [project-file-path]
用法
只需运行:
xcgraphgen [project-file-path] [OPTIONS...]
$ xcgraphgen -h
OVERVIEW: Output Xcode Target Dependency Graph.
USAGE: xcgraphgen [<options>] <project-file-path>
ARGUMENTS:
<project-file-path> .xcodeproj file path.
OPTIONS:
--output-file-path <output-file-path>
Output file path. (default: ./dependencies.md)
--mermaid-theme <mermaid-theme>
Select Mermaid theme type (eg: neutral, forest, dark, base). (default: dark)
--mermaid-syntax-type <mermaid-syntax-type>
Select Mermaid syntax type. (default: flowchart)
--mermaid-chart-direction <mermaid-chart-direction>
Select Mermaid graph/flowchart direction. (default: TD)
--enable-swift-package-output/--disable-swift-package-output
Targeting Swift Package Product for output. (default: --disable-swift-package-output)
--enable-apple-sdk-output/--disable-apple-sdk-output
Targeting Apple SDKs for output. (default: --disable-apple-sdk-output)
--enable-carthage-output/--disable-carthage-output
Targeting Carthage for output. (default: --enable-carthage-output)
--enable-cocoa-pods-output/--disable-cocoa-pods-output
Targeting CocoaPods SDKs for output (only old format without .xcfilelist). (default: --enable-cocoa-pods-output)
--enable-vendor-output/--disable-vendor-output
Targeting vendor project for output. (default: --disable-vendor-output)
--dry-run Output to console without file output
--version Show the version.
-h, --help Show help information.
例子
swift run -c release xcgraphgen ./SampleiOSApp/SampleiOSApp.xcodeproj/
%%{init: {'theme':'dark'}}%% 流程图TD 样式 SampleiOSApp 描边宽度:4px 子图 Swift 包 算法[“算法”] 结尾 子图 Swift 包本地 效用[“效用”] 结尾 子图迦太基 APIKit.xcframework["APIKit.xcframework"] 结尾 子图本机目标 APIClient["APIClient"] AppFeature["AppFeature"] 特征A[“特征A”] 功能 B["功能 B"] SampleiOSApp["SampleiOSApp"] SampleiOSAppTests["SampleiOSAppTests"] SampleiOSAppUITests["SampleiOSAppUITests"] 结尾 功能 B --> APIClient 特征 B --> 算法 AppFeature --> FeatureA AppFeature --> FeatureB SampleiOSAppTests --> SampleiOSApp SampleiOSAppUITests --> SampleiOSApp 功能 A --> APIClient SampleiOSApp --> AppFeature APIClient --> 实用程序 APIClient --> APIKit.xcframework
其他图书馆
Swift 和 iOS 社区还有其他 Xcode 工具,它们具有与 XcodeTargetGraphGen 不同的优先级和权衡。