Baike.dev
All toolsTrendingOpen sourceNewsSubmit
Log in
< 返回工具列表
D

d2

> 编程语言
开源

D2 is a modern diagram scripting language that turns text to diagrams.

24.8K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

D2 is a modern diagram scripting language that turns text to diagrams.

# Table of Contents - [What does D2 look like?](#what-does-d2-look-like) - [Quickstart](#quickstart) - [Install](#install) - [D2 as a library](#d2-as-a-library) - [Themes](#themes) - [Fonts](#fonts) - [Export file types](#export-file-types) - [Language tooling](#language-tooling) - [Plugins](#plugins) - [Comparison](#comparison) - [Contributing](#contributing) - [License](#license) - [Related](#related) - [Official plugins](#official-plugins) - [Community plugins](#community-plugins) - [Misc](#misc) - [FAQ](#faq) - [Notable open-source projects documenting with D2](#notable-open-source-projects-documenting-with-d2) ## What does D2 look like? ``` … ```

> Open in [playground](https://play.d2lang.com/?script=rVLLTsQwDLznKyJxbrWwtyLxFdyR1Zg2ahpHibvLCvXfcdqGfSHthVv8yIxn7APE1OhvpbV5qVryn7ZbQ60dnGjiCn1nPTYa3bCkn_Q7xtF6cJp7HFG3ZHCpLGFlTaP3u51kZjUrj3ykOKyYLTr5REeMhSMBS84yppKRXA9B-BJTRPNhgKEU-OSwHifHNjjp4DitxLNa-SP4NFpmjOoGXVdvl2VBR2_-sWeZgLwTp3SgyOCKnsnKa5PU4xd05OfyIWvTIVKLKdHZExEOHd4Z0p4E3oi2h25s8Ge764uZs4Rr4vqXMfQkAhx1SVanplQWtU0QMCbyEh-t4b7Rz_td6cuo267ryzWPMMiFgHN3XVdu1dkmaPM8K-EiLnGkASsDScj2mQqCFcvj4RGUsSnI_d70Z2GrCptYrVHZTRADXv80VWgL0bVvGfJMoH4A) > For more examples, see [./docs/examples](./docs/examples). ## Quickstart The most convenient way to use D2 is to just run it as a CLI executable to produce SVGs from `.d2` files. ```sh # First, install D2 curl -fsSL https://d2lang.com/install.sh | sh -s -- echo 'x -> y -> z' > in.d2 d2 --watch in.d2 out.svg ``` A browser window will open with `out.svg` and live-reload on changes to `in.d2`. ## Install The easiest way to install is with our install script: ```sh curl -fsSL https://d2lang.com/install.sh | sh -s -- ``` You can run the install script with `--dry-run` to see the commands that will be used to install without executing them. Or if you have Go installed you can install from source though you won't get the manpage: ```sh go install github.com/d2lang/d2@latest ``` You can also install a release from source which will include manpages. See [./docs/INSTALL.md#source-release](./docs/INSTALL.md#source-release). To uninstall with the install script: ```sh curl -fsSL https://d2lang.com/install.sh | sh -s -- --uninstall ``` For detailed installation docs, see [./docs/INSTALL.md](./docs/INSTALL.md). We demonstrate alternative methods and examples for each OS. As well, the functioning of the install script is described in detail to alleviate any concern of its use. We recommend using your OS's package manager directly instead for improved security but the install script is by no means insecure. ## D2 as a library In addition to being a runnable CLI tool, D2 can also be used to produce diagrams from Go programs. For examples, see [./docs/examples/lib](./docs/examples/lib). ## Themes D2 includes a variety of official themes to style your diagrams beautifully right out of the box. See [./d2themes](./d2themes) to browse the available themes and make or contribute your own creation. ## Fonts D2 ships with "Source Sans Pro" as the font in renders. If you wish to use a different one, please see [./d2renderers/d2fonts](./d2renderers/d2fonts). ## Export file types D2 supports SVG, PNG, GIF, PDF, and PPTX exports. ## Language tooling D2 is designed with language tooling in mind. D2's parser can parse multiple errors from a broken program, has an autoformatter, syntax highlighting, and we have plans for LSP's and more. Good language tooling is necessary for creating and maintaining large diagrams. The extensions for VSCode and Vim can be found in the [Related](#related) section. ## Plugins D2 is designed to be extensible and composable. The plugin system allows you to change out layout engines and customize the rendering pipeline. Plugins can either be bundled with the build or separately installed as a standalone binary. **Layout engines**: - [Dagro](https://github.com/d2lang/dagro) (default, bundled): A native Go port of the Dagre directed graph layout engine that produces layered/hierarchical layouts. Based on Graphviz's DOT algorithm. - [elk-go](https://github.com/d2lang/elk-go) (bundled): A native Go port of the ELK directed graph layout engine, particularly suited for node-link diagrams with an inherent direction and ports. - [TALA](./d2layouts/d2talalayout) (bundled, opt-in): Native layout and edge-routing engine designed specifically for software architecture diagrams. Select it with `--layout=tala`, `D2_LAYOUT=tala`, or a `layout-engine: tala` setting under `vars.d2-config` in D2 source. D2 intends to integrate with a variety of layout engines, e.g. `dot`, as well as single-purpose layout types like sequence diagrams. You can choose whichever layout engine you like and works best for the diagram you're making. Sketch-mode rendering uses [rough-go](https://github.com/d2lang/rough-go), a native Go compatibility port of the Rough.js 4.6.6 rendering surface used by D2. LaTeX labels use [mathjax-go](https://github.com/d2lang/mathjax-go), a native Go port of the MathJax 3.2.2 TeX-to-SVG pipeline. ## Comparison For a comparison against other popular text-to-diagram tools, see [https://text-to-diagram.com](https://text-to-diagram.com). ## Contributing Contributions are welcome! See [./docs/CONTRIBUTING.md](./docs/CONTRIBUTING.md). ## License Open sourced under the Mozilla Public License 2.0. See [./LICENSE.txt](./LICENSE.txt). ## Related We are constantly working on new plugins, integrations, extensions. Contributions are welcome in any official or community plugins. If you have somewhere in your workflow that you want to use D2, feel free to open a discussion. We have limited bandwidth and usually choose the most high-demand ones to work on. If you make something cool with D2 yourself, let us know and we'll be happy to include it here! ### Official plugins - **VSCode extension**: [https://github.com/d2lang/d2-vscode](https://github.com/d2lang/d2-vscode) - **Vim extension**: [https://github.com/d2lang/d2-vim](https://github.com/d2lang/d2-vim) - **Obsidian plugin**: [https://github.com/d2lang/d2-obsidian](https://github.com/d2lang/d2-obsidian) ### Community plugins - **Tree-sitter grammar**: [https://github.com/ravsii/tree-sitter-d2](https://github.com/ravsii/tree-sitter-d2) - **Emacs major mode**: [https://github.com/andorsk/d2-mode](https://github.com/andorsk/d2-mode) - **Goldmark extension**: [https://github.com/FurqanSoftware/goldmark-d2](https://github.com/FurqanSoftware/goldmark-d2) - **Telegram bot**: [https://github.com/meinside/telegram-d2-bot](https://github.com/meinside/telegram-d2-bot) - **Postgres importer**: [https://github.com/zekenie/d2-erd-from-postgres](https://github.com/zekenie/d2-erd-from-postgres) - **Structurizr to D2 exporter**: [https://github.com/goto1134/structurizr-d2-exporter](https://github.com/goto1134/structurizr-d2-exporter) - **MdBook preprocessor**: [https://github.com/danieleades/mdbook-d2](https://github.com/danieleades/mdbook-d2) - **ROS2 D2 Exporter**: [https://github.com/Greenroom-Robotics/ros-d2](https://github.com/Greenroom-Robotics/ros-d2) - **D2 org-mode support**: [https://github.com/xcapaldi/ob-d2](https://github.com/xcapaldi/ob-d2) - **Python D2 diagram builder**: [https://github.com/MrBlenny/py-d2](https://github.com/MrBlenny/py-d2) - **Clojure D2 transpiler**: [https://github.com/judepayne/dictim](https://github.com/judepayne/dictim) - **JavaScript D2 diagram builder**: [https://github.com/Kreshnik/d2lang-js](https://github.com/Kreshnik/d2lang-js) - **C# & dotnet SDK**: [https://github.com/Stephanvs/d2lang-cs](https://github.com/Stephanvs/d2lang-cs) - **Maven plugin**: [https://github.com/andrinmeier/unofficial-d2lang-maven-plugin](https://github.com/andrinmeier/unofficial-d2lang-maven-plugin) - **Confluence plugin**: [https://github.com/andrinmeier/unofficial-d2lang-confluence-plugin](https://github.com/andrinmeier/unofficial-d2lang-confluence-plugin) - **CIL (C#, Visual Basic, F#, C++ CLR) to D2**: [https://github.com/HugoVG/AppDiagram](https://github.com/HugoVG/AppDiagram) - **D2 Snippets (for text editors)**: [https://github.com/Paracelsus-Rose/D2-Language-Code-Snippets](https://github.com/Paracelsus-Rose/D2-Language-Code-Snippets) - **Mongo to D2**: [https://github.com/novuhq/mongo-to-D2](https://github.com/novuhq/mongo-to-D2) - **Pandoc filter (TypeScript)**: [https://github.com/ram02z/d2-filter](https://github.com/ram02z/d2-filter) - **Pandoc filter (Python)**: [https://github.com/fliiiix/pandoc-d2-filter](https://github.com/fliiiix/pandoc-d2-filter) - **Logseq-D2**: [https://github.com/b-yp/logseq-d2](https://github.com/b-yp/logseq-d2) - **ent2d2**: [https://github.com/tmc/ent2d2](https://github.com/tmc/ent2d2) - **MkDocs Plugin**: [https://github.com/landmaj/mkdocs-d2-plugin](https://github.com/landmaj/mkdocs-d2-plugin) - **Remark Plugin**: [https://github.com/mech-a/remark-d2](https://github.com/mech-a/remark-d2) - **VitePress Plugin**: [https://github.com/BadgerHobbs/vitepress-plugin-d2](https://github.com/BadgerHobbs/vitepress-plugin-d2) - **Zed extension**: [https://github.com/gabeidx/zed-d2](https://github.com/gabeidx/zed-d2) - **Hexo blog extension**: [https://github.com/leverimmy/hexo-d2](https://github.com/leverimmy/hexo-d2) - **Rehype Plugin**: [https://github.com/stereobooster/beoe/tree/main/packages/rehype-d2](https://github.com/stereobooster/beoe/tree/main/packages/rehype-d2) - **AsyncAPI to D2**: [https://github.com/holydocs/messageflow](https://github.com/holydocs/messageflow) - **Database Schemas to D2**: [https://github.com/holydocs/dberd](https://github.com/holydocs/dberd) ### Misc - **Comparison site**: [https://github.com/d2lang/text-to-diagram-site](https://github.com/d2lang/text-to-diagram-site) - **Playground**: [https://github.com/d2lang/d2-playground](https://github.com/d2lang/d2-playground) - **Language docs**: [https://github.com/d2lang/d2-docs](https://github.com/d2lang/d2-docs) - **Hosted icons**: [https://icons.d2lang.com](https://icons.d2lang.com) ## FAQ - Does D2 collect telemetry? - No, D2 does not use an internet connection after installation, except to check for version updates from Github periodically. - Does D2 need a browser to run? - No, D2 can run entirely server-side. - What's coming in the next release? - See [./ci/release/changelogs/next.md](./ci/release/changelogs/next.md). - I have a question or need help. - The best way to get help is to ask on [D2 Discord](https://discord.gg/NF6X8K4eDq) - I have a feature request, proposal, or bug report. - Please open up a Github Issue. - I have a private inquiry. - Please reach out at [[email protected]]([email protected]). ## Notable open-source projects documenting with D2 Do you have or see an open-source project with `.d2` files? Please submit a PR adding to this selected list of featured projects using D2. - [ElasticSearch](https://github.com/elastic/beats/blob/main/libbeat/publisher/queue/proxy/diagrams/broker.d2) - [Sourcegraph](https://handbook.sourcegraph.com/departments/engineering/managed-services/telemetry-gateway/#dev-architecture-diagram) - [Temporal](https://github.com/temporalio/temporal/blob/0be2681c994470c7c61ea88e4fcef89bb4024e58/docs/_assets/matching-context.d2) - [Tauri](https://v2.tauri.app/concept/inter-process-communication/) - Rust GUI framework (78.5k stars) - [Intellij](https://github.com/JetBrains/intellij-community/blob/45bcfc17a3f3e0d8548bc69e922d4ca97ac21b2b/platform/settings/docs/topics/overview.md) - [Coder](https://coder.com/blog/managing-templates-in-coder) - [UC Berkeley](https://github.com/ucb-bar/hammer/blob/2b5c04d7b7d9ee3c73575efcd7ee0698bd5bfa88/doc/Hammer-Use/hier.d2) - [Coronacheck](https://github.com/minvws/nl-covid19-coronacheck-app-ios/blob/e1567e9d1633b3273c537a105bff0e7d3a57ecfe/Diagrams/client-side-datamodel.d2) - Official app of the Netherlands for coronavirus entry passes. - [Block Protocol](https://github.com/blockprotocol/blockpro

核心特点

  • •What does D2 look like?
  • •Quickstart
  • •D2 as a library
  • •Export file types
  • •Language tooling
  • •Comparison
  • •Contributing
  • •Official plugins
  • •Community plugins
  • •Notable open-source projects documenting with D2

> 标签

Godeveloper-toolsdiagrammingdiagramsgo

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月9日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言
Baike.dev

baike.dev helps you discover great languages, frameworks, databases, DevOps and cloud-native tools.

Quick links

  • Home
  • All tools
  • Trending
  • Open source

About

  • About us
  • Community
  • News

Contribute

Found a great developer tool? Share it with the community.

Submit a tool
© 2026 baike.dev Developer EncyclopediaUpdated daily · Discover great developer tools