Repository navigation
依赖图
mkd graph 在终端绘制项目的 Target 依赖图。每份 Markfile 是一个带文件名的分组框,每个 Target 是框内的节点,箭头从前置 Target 指向依赖它的 Target。同一模块的 Target 使用相近颜色,不同模块使用不同主题色,每条边取两端颜色的中间色。--direction 接受 top-down、bottom-up、left-right、right-left 四个方向;--charset ascii 输出纯 ASCII 线条;颜色遵循全局 --color auto|always|never 设置。
mkd graph # 全项目图
mkd graph platform::launch # 指定 Target 及其前置依赖
mkd graph --format dot -o g.dot # 导出 Graphviz DOT
mkd graph --image project.svg # 导出 SVG 图片--image [FILE] 由内置导出器生成带配色的矢量 SVG。SVG 按终端格为每个字符指定横坐标,中文双宽字符预留两格,线条与标签保持对齐。DOT 文件可交给 dot -Tpng 等命令继续处理。
交互模式
mkd graph --interactive 以 Module 为页面、以 Target 为焦点浏览依赖图。每页显示当前模块的全部 Target 以及它们直接依赖的外部 Target,进入对应模块后才展开外部节点的依赖。h/j/k/l 或方向键选择相应方向的 Target,Tab / Shift-Tab 依次选择节点;Shift+H/J/K/L 按一格调整相对观察位置,偏移在选择 Target、切换模块及返回时保留。
聚焦 Target 时显示只含绝对路径名和 description 的缩略浮窗;按 Enter 展开描述、规格和依赖的详情浮窗,再按 Enter 或 Esc 收起,缩略窗随之恢复。选中外部 Target 后按 Enter 切换到它所属的模块并保留焦点。浮窗关闭时 Esc / Backspace 返回上一个模块及焦点,[ / ] 切换上一个/下一个模块。按 e 将当前模块局部图导出为 SVG,Ctrl-C 退出。
Git 归档
mkd archive 暂存项目变化并创建一次 Git 提交。平铺布局暂存整个项目目录;隐藏布局暂存 .mkd/、mkd.toml 与已有的 mkd.lock。提交消息由概括数量的主题行和按动作分组的 Target 清单组成,add、update、remove 分别表示 Target 新增、语义内容变化和删除:
Archive targets: add 2, update 1, remove 1
Add:
- release
- docs
Update:
- test
Remove:
- draft
隐藏布局与项目初始化
应用型项目默认把 Markfile 收进 .mkd/:模块位于 .mkd/ 内,mkd.toml、mkd.lock 与默认产物位于外层。mkd init 创建 .mkd/main.mf;mkd init --flat 保留平铺目录方式;mkd init --lib 创建以 lib.mf 为根的包项目。项目查找按 main.mf、lib.mf、.mkd/main.mf、.mkd/lib.mf 顺序进行,--root FILE 可显式指定入口。已有入口文件时,可用对应布局的 init 参数补建 mkd.toml。
.mjar 包与哈希锁
以 lib.mf 为根的项目运行 mkd pack,得到 dist/<项目名>.mjar。它是保留模块结构的压缩包,公开接口来自 lib.mf 的公开区。将包复制到另一项目的 .mkd/vendor/,在 Markfile 顶部写 > crate::vendor::*utils::目标 as 别名 即可导入,*utils 与普通 utils.mf 的引用有明确区分。打包从公开目标出发按模块剪枝,并展开已导入的包,写出后自校验。
mkd lock 遍历项目中的包导入,把路径与 SHA-256 哈希记入 mkd.lock。之后构建时,已记录的包哈希不符会报错;更新包后重新运行 mkd lock。mkd graph --jar dist/<项目名>.mjar 可直接查看包图。
插件分发
VS Code 插件的六个平台包随版本发布同步上传至 Open VSX。