一种现代的图表脚本语言,可将文本转换为图表。
https://user-images.githubusercontent.com/3120367/206125010-bd1fea8e-248a-43e7-8f85-0bbfca0c6e2a.mp4
目录
D2 长什么样?
vars: {
d2-config: {
layout-engine: elk
# 终端主题代码
theme-id: 300
}
}
network: {
cell tower: {
satellites: {
shape: stored_data
style.multiple: true
}
transmitter
satellites -> transmitter: send
satellites -> transmitter: send
satellites -> transmitter: send
}
online portal: {
ui: {shape: hexagon}
}
data processor: {
storage: {
shape: cylinder
style.multiple: true
}
}
cell tower.transmitter -> data processor.storage: phone logs
}
user: {
shape: person
width: 130
}
user -> network.cell tower: make call
user -> network.online portal.ui: access {
style.stroke-dash: 3
}
api server -> network.online portal.ui: display
api server -> logs: persist
logs: {shape: page; style.multiple: true}
network.data processor -> api server
在在线试用中打开
更多示例,请参阅 ./docs/examples。
快速开始
使用 D2 最方便的方式是将其作为 CLI 可执行文件运行,从 .d2
文件生成 SVG。
# 首先,安装 D2
curl -fsSL https://d2lang.com/install.sh | sh -s --
echo 'x -> y -> z' > in.d2
d2 --watch in.d2 out.svg
浏览器窗口将打开 out.svg
,并在 in.d2
发生更改时实时重新加载。
安装
最简单的安装方式是使用我们的安装脚本:
curl -fsSL https://d2lang.com/install.sh | sh -s --
您可以使用 --dry-run
运行安装脚本,以查看将用于安装的命令而不执行它们。
如果您已安装 Go,也可以从源代码安装,但不会获得手册页:
go install oss.terrastruct.com/d2@latest
您还可以从源代码安装发布版本,其中包括手册页。 请参阅 ./docs/INSTALL.md#source-release。
要使用安装脚本卸载:
curl -fsSL https://d2lang.com/install.sh | sh -s -- --uninstall
有关详细的安装文档,请参阅 ./docs/INSTALL.md。 我们演示了每个操作系统的替代方法和示例。
此外,安装脚本的功能有详细描述,以消除任何使用上的顾虑。为了提高安全性,我们建议直接使用操作系统的包管理器,但安装脚本绝不是不安全的。
作为库使用 D2
除了可作为可运行的 CLI 工具外,D2 还可以用于在 Go 程序中生成图表。
有关示例,请参阅 ./docs/examples/lib。这篇博客文章也演示了一个完整的、可运行的真实用例示例,展示了如何将 D2 作为库使用。
主题
D2 包含各种官方主题,可以直接为您的图表添加漂亮的样式。请查看 ./d2themes 以浏览可用的主题,并制作或贡献您自己的创作。
字体
D2 默认使用 "Source Sans Pro" 作为渲染字体。如果您想使用其他字体,请参阅 ./d2renderers/d2fonts。
导出文件类型
D2 目前支持 SVG、PNG 和 PDF 导出。更多格式即将推出。
语言工具
D2 在设计时就考虑到了语言工具。D2 的解析器可以从有错误的程序中解析多个错误,具有自动格式化功能、语法高亮,我们还计划开发 LSP 等更多功能。良好的语言工具对于创建和维护大型图表是必要的。
VSCode 和 Vim 的扩展可以在相关部分找到。
插件
D2 设计为可扩展和可组合的。插件系统允许您更换布局引擎并自定义渲染流程。插件可以与构建捆绑在一起,也可以作为独立的二进制文件单独安装。
布局引擎:
- dagre(默认,捆绑):一个快速的有向图布局引擎,可生成分层/层次布局。基于 Graphviz 的 DOT 算法。
- ELK(捆绑):一个特别适合具有固有方向和端口的节点链接图的有向图布局引擎。
- TALA(二进制):专为软件架构图设计的新型布局引擎。需要单独安装,访问 Github 页面了解更多。
D2 计划集成各种布局引擎,例如 dot
,以及单一用途的布局类型,如序列图。您可以选择任何您喜欢的布局引擎,以最适合您正在制作的图表。
对比
有关与其他流行的文本到图表工具的比较,请参阅 https://text-to-diagram.com。
贡献
欢迎贡献!请参阅 ./docs/CONTRIBUTING.md。
许可证
根据 Mozilla Public License 2.0 开源。请参阅 ./LICENSE.txt。
相关
我们不断开发新的插件、集成和扩展。欢迎在任何官方或社区插件中做出贡献。如果您在工作流程中有想要使用 D2 的地方,请随时开启讨论。我们的带宽有限,通常选择需求最高的项目进行开发。如果您自己用 D2 做了一些很酷的东西,请告诉我们,我们很乐意在这里包含它!
官方插件
- VSCode 扩展:https://github.com/terrastruct/d2-vscode
- Vim 扩展:https://github.com/terrastruct/d2-vim
- Obsidian 插件:https://github.com/terrastruct/d2-obsidian
- Slack 应用:https://d2lang.com/tour/slack
- Discord 插件:https://d2lang.com/tour/discord
社区插件
- Tree-sitter语法: https://git.pleshevski.ru/pleshevskiy/tree-sitter-d2
- Emacs主模式: https://github.com/andorsk/d2-mode
- Goldmark扩展: https://github.com/FurqanSoftware/goldmark-d2
- Telegram机器人: https://github.com/meinside/telegram-d2-bot
- Postgres导入器: https://github.com/zekenie/d2-erd-from-postgres
- Structurizr到D2导出器: https://github.com/goto1134/structurizr-d2-exporter
- MdBook预处理器: https://github.com/danieleades/mdbook-d2
- ROS2 D2导出器: https://github.com/Greenroom-Robotics/ros-d2
- D2 org-mode支持: https://github.com/xcapaldi/ob-d2
- Python D2图表构建器: https://github.com/MrBlenny/py-d2
- Clojure D2转译器: https://github.com/judepayne/dictim
- JavaScript D2图表构建器: https://github.com/Kreshnik/d2lang-js
- C#和dotnet SDK: https://github.com/Stephanvs/d2lang-cs
- Maven插件: https://github.com/andrinmeier/unofficial-d2lang-maven-plugin
- Confluence插件: https://github.com/andrinmeier/unofficial-d2lang-confluence-plugin
- CIL (C#, Visual Basic, F#, C++ CLR)到D2: https://github.com/HugoVG/AppDiagram
- D2代码片段(用于文本编辑器): https://github.com/Paracelsus-Rose/D2-Language-Code-Snippets
- Mongo到D2: https://github.com/novuhq/mongo-to-D2
- Pandoc过滤器: https://github.com/ram02z/d2-filter
- Logseq-D2: https://github.com/b-yp/logseq-d2
- ent2d2: https://github.com/tmc/ent2d2
- MkDocs插件: https://github.com/landmaj/mkdocs-d2-plugin
- Remark插件: https://github.com/mech-a/remark-d2
其他
- 比较网站: https://github.com/terrastruct/text-to-diagram-site
- Playground: https://github.com/terrastruct/d2-playground
- 语言文档: https://github.com/terrastruct/d2-docs
- 托管图标: https://icons.terrastruct.com
常见问题
- D2是否收集遥测数据?
- 不,D2在安装后不使用互联网连接,除了定期从Github检查版本更新。
- D2是否需要浏览器才能运行?
- 不,D2可以完全在服务器端运行。
- 下一个版本会有什么新内容?
- 我有问题或需要帮助。
- 获取帮助的最佳方式是在D2 Discord上提问。
- 我有功能请求、提议或错误报告。
- 请在Github上开启一个Issue。
- 我有私人咨询。
- 请通过hi@d2lang.com联系我们。
使用D2进行文档编写的著名开源项目
如果您有或看到包含.d2
文件的开源项目,请提交PR将其添加到这个精选的使用D2的项目列表中。
- ElasticSearch
- Sourcegraph
- Temporal
- Tauri
- Rust GUI框架(78.5k星)
- Intellij
- Coder
- 加州大学伯克利分校
- Coronacheck
- 荷兰官方新冠病毒入场通行证应用。
- Block Protocol
- Block Protocol是一个用于构建和使用数据驱动块的开放标准(1.2k星)。
- Dagger
- 一个可编程的CI/CD引擎,在容器中运行您的管道(8k星)。
- Ivy Wallet
- 开源Android记账应用(1.1k星)。
- LocalStack
- 云服务模拟器(46k星)
- Queue Library
- Queue是一个用于生成和管理Goroutine池的Golang库