ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

D2 v0.1.0 版本解析:Windows 支持、时序图、fmt 格式化与 direction 布局全面落地

D2 v0.1.0 版本解析:Windows 支持、时序图、fmt 格式化与 direction 布局全面落地 D2 v0.1.0 版本解析Windows 支持、时序图、fmt 格式化与 direction 布局全面落地【免费下载链接】d2D2 is a modern diagram scripting language that turns text to diagrams.项目地址: https://gitcode.com/GitHub_Trending/d2/d2D2 是把文本变成图表的现代图表脚本语言而 v0.1.0 是它开源之后发布的第一个重要版本整个迭代完全围绕社区在 Discord、GitHub Issue/Discussion、社交媒体和邮件中反馈的最大痛点展开一次性落地了 Windows 支持、实验性时序图、fmt格式化子命令、LaTeX 渲染、direction方向关键字等一批关键能力。本文将基于仓库内的发布说明 ci/release/changelogs/v0.1.0.md结合当前仓库源码逐一拆解这些新特性、改进与修复读完你既能掌握 v0.1.0 的核心用法也能理解这些功能在 D2 代码库中的真实落点。版本背景开源两周后的第一次集中迭代在 v0.1.0 之前的版本发布后开发团队刻意把下一个迭代留成完全空白因为他们虽然有长期规划但希望把开源后的首个更新 100% 聚焦在用户反馈最强烈的痛点上。发布说明明确写道本版本的每一条内容都来自于 D2 Discord、GitHub Issue/Discussion、社交媒体评论或邮件中的真实诉求。这种以社区反馈驱动迭代的方式让 v0.1.0 成为 D2 历史上极具代表性的一次功能里程碑。与此同时官方也开始围绕 D2 构建周边生态先是推出了Obsidian 集成d2-obsidian并启动了API与Playground在线体验平台的开发。对于纯视觉类的改动PR 里通常会附带截图方便快速预览效果。一、新功能Features逐一解析v0.1.0 共带来 11 项新功能覆盖平台支持、图形语法、命令行与安装体验四个维度汇总如下功能一句话说明仓库内佐证Windows 支持提供 Windows 原生安装与使用路径ci/windows/d2.wxs、docs/INSTALL.md实验性时序图支持 actor/lifeline/message 的时序图布局d2graph/seqdiagram.go、d2layouts/d2sequence/sequence_diagram.gofmt子命令在 CLI 上格式化 d2 脚本d2cli/fmt.go、d2format/format.goLaTeX 支持在文本标签中渲染 LaTeX 公式d2renderers/d2latex/latex_common.go、d2scenebuild/latex.godirection关键字指定整体布局方向up/down/right/leftd2ast/keywords.go自引用连接x - x合法化d2layouts/d2dagrelayout/layout.go箭头标签连接箭头处支持标签—样式属性扩展stroke-dash、font-color、font-sized2scenebuild/labels.goSVG HTML ID输出 SVG 中为形状/连接附加 IDd2svg/d2svg.go-b/--bundle标志图片资源内联为 base64 data urld2cli/main.go、lib/imgbundler/imgbundler.goinstall.sh -d-d作为--dry-run的别名install.sh1. Windows 支持正式落地v0.1.0 起Windows 成为 D2 的一等公民官方提供了完整的 Windows 使用指引见 docs/INSTALL.md 的 Windows 一节。仓库中保留的 ci/windows/d2.wxsWiX 安装包描述文件以及配套的 d2.ico/d2.png 图标资源正是 Windows MSI 安装包与发行链路的实现证据。在 Windows 上有几条推荐路径MSI 安装包安装完成后d2已加入$PATH可在cmd.exe或pwsh.exe中直接执行MSYS2 / Git Bash提供类 Unix 的 shell 环境能让 install.sh、make install与man d2正常工作终端内也能显示彩色输出WSLWindows Subsystem for Linux与普通 Linux 系统一样安装即可。2. 实验性时序图Sequence Diagrams时序图是 v0.1.0 最受关注的新图形类型之一但当时被明确标注为实验性功能。从源码结构看时序图的建模与渲染已经形成了完整链路语法/图结构层面由 d2graph/seqdiagram.go 承接其中注释说明时序图中没有连接消息的对象会被当作分组groups布局层面由独立的布局引擎 d2layouts/d2sequence/sequence_diagram.go 实现其核心数据结构明确包含三类要素actors参与者、lifelines生命线与messages消息并通过actorXStep等参数计算参与者之间的水平间距测试方面有 d2layouts/d2sequence/lifeline_test.go 等用例兜底。从 d2ast/keywords.go 可以看到scenarios、steps等关键字说明时序图语法在后继版本中持续演进在 v0.1.0 中用户可以开始用参与者与消息描述交互流程且渲染效果会随布局引擎不同而有所差异。3.fmt子命令脚本格式化的 CLI 入口v0.1.0 在 CLI 中加入了fmt子命令用于统一 d2 脚本的格式。其实现位于 d2cli/fmt.go核心逻辑非常清晰对每个输入文件调用d2parser.Parse得到语法树调用 d2format/format.go 中的d2format.Format重新格式化与原始内容比对不一致时默认直接写回文件若带有--check标志则只统计并告警不合规文件最终以退出码 1 提示found N unformatted file(s). Run d2 fmt to fix.。基本用法# 直接格式化一个或多个文件也支持 - 从标准输入读取 d2 fmt file.d2 # 只检查不修改常用于 CI 校验 d2 fmt --check file.d2配合 d2cli/main.go 中的D2_CHECK/--check选项fmt可以无缝接入提交前检查或持续集成流程这是脚本语言保持风格一致性的关键基建。4. LaTeX 支持v0.1.0 引入了 LaTeX 渲染能力允许在图形标签中使用 LaTeX 公式。仓库内的 d2renderers/d2latex/latex_common.go 是 LaTeX 渲染的公共实现而 d2scenebuild/latex.go 负责把 LaTeX 文本接入场景构建管线配套的 d2renderers/d2latex/latex_test.go 则对渲染行为做了回归保障。对技术文档、教学图示中需要数学公式的场景这一能力让 D2 可以直接产出含公式的图。5.direction关键字显式控制布局方向v0.1.0 新增direction关键字支持up、down、right、left四种取值用于显式指定布局方向。direction已成为语法层面的一等关键字见 d2ast/keywords.go可在脚本顶层或容器作用域内使用# 整个图自左向右布局 direction: right a - b - c # 局部容器内自上而下 direction: down配套改进是ELK 布局引擎默认改为自上而下top-down与 dagre 保持一致避免用户在不同引擎之间切换时方向感突变。布局引擎的实现分别位于 d2layouts/d2dagrelayout/layout.go 与 d2layouts/d2elklayout/layout.go。6. 自引用连接Self-referencing Connectionsx - x这种自引用边在 v0.1.0 中变为合法写法渲染结果会根据布局引擎不同而变化——例如 dagre/ELK 会绘制绕回自身的环。这让某节点触发自身状态变化这类语义有了直接表达方式。7. 箭头标签Arrowhead Labels连接可以携带箭头标签写法即在箭头右侧的冒号后跟文本a - b: 请求数据 b - a: 返回结果标签会渲染在箭头头部附近显著提升边上有说明类图表的可读性。8. 样式属性扩展stroke-dash、font-color、font-sizev0.1.0 为形状shapes和连接connections补充了三类高频样式属性stroke-dash虚线描边对应 Issue #188适用于强调可选路径、待办流程等语义font-color文字颜色PR #215形状与连接均可用font-size字号PR #250形状与连接均可用。用法遵循 D2 的style属性约定todo: 待定方案 todo.style.stroke-dash: 4 todo.style.font-color: #b58900 todo.style.font-size: 16 a - b: 说明 a - b.style.font-color: #268bd2这些样式由 d2scenebuild/labels.go 等场景构建模块转换为最终的渲染指令让图表从能画走向可定制。9. SVG 输出附带 HTML IDv0.1.0 起SVG 输出的形状与连接都会附带 HTML ID渲染完成后可以直接用 ID 进行查询与交互——例如在前端页面上按 ID 定位某个节点并绑定事件或高亮。这使得 D2 生成的 SVG 不只是静态图片还能作为可编程的 DOM 结构使用实现在 d2svg/d2svg.go 的输出管线中。10.-b/--bundle一键内联所有图片资源新标志-b长选项--bundle可以让d2在输出 SVG 时把所有图片资产直接以base64 data URL的形式内联进 SVG 文件。在 d2cli/main.go 中对应的定义是bundleFlag, err : ms.Opts.Bool(D2_BUNDLE, bundle, b, true, when outputting SVG, bundle all assets and layers into the output file)即同时支持D2_BUNDLE环境变量、--bundle与-b三种写法。底层由 lib/imgbundler/imgbundler.go 完成资源打包。使用方式d2 -b input.d2 output.svg打包后的 SVG 是单个自包含文件非常适合邮件、文档、离线分享等必须单文件的场景。同样受益于此的还有 PNG 导出中图片加载的修复见下文 Bugfixes。11.install.sh增加-d别名install.sh 新增-d作为--dry-run的别名用于只预览、不执行地查看安装脚本将要运行的命令安装前先确认系统会被怎样修改sh ./install.sh -d # 等价于 --dry-run预览将要执行的安装命令 sh ./install.sh # 确认无误后正式安装从 install.sh 的帮助文本可以看到该脚本当前完整的标志集-d/--dry-run、--version vX.X.X、--method detect|standalone|homebrew、--prefix path、--tala [latest]、--force、--uninstall、-x/--trace其中--dry-run的实现就是在DRY_RUN1时让sh_c只打印命令而不执行见 install.sh 中sh_c()函数。二、体验改进Improvements汇总v0.1.0 在体验层同样打磨了大量细节1.icon支持本地图片路径icon关键字的值不再局限于网络地址可以直接使用本地图片例如icon: ./my_img.png。这极大方便了离线环境与私有资产的使用。当前仓库中 lib/imageasset/imageasset.go 与 d2scenebuild/assets.go 正是图标/图片资产的解析与接入实现。2. 连接标签不再互相重叠修复了连接标签相互覆盖的问题PR #332多边并行时标签的可读性得到实质提升。3. ELK 默认方向与 dagre 对齐ELK 布局引擎默认方向改为自上而下top-down与 dagre 保持一致降低引擎切换带来的布局差异。4. 容器默认字体不再加粗此前所有文字默认加粗导致整体观感太粗v0.1.0 起容器默认字体样式不再是粗体视觉层次更克制。5.BROWSER0禁用自动打开浏览器--watch模式默认会自动打开浏览器预览现在设置环境变量BROWSER0即可禁用这一行为适合在无图形环境或 CI 中使用--watch。相关实现位于 d2cli/watch.go。6. 安装脚本的多项健壮性改进install.sh的 dry-run 提示信息更醒目PR #266install.sh默认仍安装到/usr/local但当当前用户无权写入/usr/local时不再弹 sudo 交互而是自动改用~/.local如需强制装进/usr/local并可接受 sudo 提示可显式传--prefix /usr/localPR #372。该逻辑在 install.sh 的ensure_prefix()中实现先探测/usr/local/lib是否可写不可写则回退到$HOME/.locald2从子命令位置移到仓库根目录PR #290根模块可以直接从源码安装即go install一条命令即可获得 CLI当前源码安装方式见 docs/INSTALL.md入口为根目录的 main.go。三、Bugfixes稳定性与渲染正确性修复v0.1.0 共修复 9 个问题覆盖渲染、导出、文件监听与安装四类修复项说明3D 样式边框缺失3D 形状顶面与右面此前缺失边框等样式PR #187系统深色模式误伤 Markdown渲染结果中的 Markdown 不再被系统深色模式错误套用Issue #159Markdown 换行修复以行尾双空格或反斜杠创建的换行得到正确渲染PR #214相关管线见 d2scenebuild/markdown.goPNG 导出图片不加载修复 PNG 导出中图片加载失败的问题Issue #224标签与图标重叠dagre 与 ELK 布局下标签和图标不再重叠PR #343文件监听误报不再记录良性的文件监听错误PR #293$BROWSER自定义浏览器现在可正确使用自定义浏览器命令例如 macOS 上BROWSERopen -a FirefoxPR #311dagre 编号 ID 错位修复 dagre 中编号 ID 定位错误Issue #321其中系统深色模式误伤 Markdown修复的价值在于D2 的 Markdown 文本渲染管线d2scenebuild/markdown.go、lib/textmeasure/markdown.go必须保持与主题/配色系统正交否则深色模式下内容可读性会崩溃。文件监听误报修复则与--watch体验直接相关——良性事件不应污染终端输出。四、如何上手体验 v0.1.0 的核心能力将上述功能组合起来一个完整的 v0.1.0 风格脚本可以长这样# 文件demo.d2 direction: right api: API 服务 db: 数据库 api - db: 查询 db - db: 重试 # 自引用连接 api - api: 本地缓存 # 自引用连接 todo: 优化项 todo.style.stroke-dash: 4 todo.style.font-color: #b58900 todo.style.font-size: 14然后依次体验命令行能力# 格式化脚本 d2 fmt demo.d2 # 渲染 SVG形状/连接会附带 HTML ID d2 demo.d2 demo.svg # 单文件自包含输出图片资源内联为 base64 d2 -b demo.d2 demo-bundled.svg # 预览模式BROWSER0 可禁用自动开浏览器 BROWSER0 d2 --watch demo.d2 demo.svg安装方面推荐先预览再安装sh ./install.sh -d # 预览将要执行的安装命令 sh ./install.sh # 正式安装/usr/local 不可写时自动回退 ~/.local更完整的安装方式macOS Homebrew、Linux 发行版、Standalone、源码编译、Windows MSI、Docker 等可参阅 docs/INSTALL.md。结语v0.1.0 是 D2从开源走向社区驱动的第一块里程碑平台上补齐了 Windows语法上补上了时序图、方向控制、自引用边、箭头标签与高频样式工具链上补上了fmt、--bundle和更聪明的安装脚本同时用一轮扎实的 Bugfixes 夯实了渲染与导出质量。结合当前仓库源码可以看到这些特性已经在 d2graph、d2layouts、d2cli、d2scenebuild 等模块中形成了完整实现与测试闭环后续版本如 v0.2.x、v0.4.x 等见 ci/release/changelogs的演进正是在此基础上的持续扩展。【免费下载链接】d2D2 is a modern diagram scripting language that turns text to diagrams.项目地址: https://gitcode.com/GitHub_Trending/d2/d2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表