📌 项目地址likec4/likec4 | ⭐ 4,182 颗星 | 🔧 TypeScript | 📜 未标注

问题先讲清楚

手工画的架构图有个死结:图存在绘图工具里,代码存在仓库里,两边没有任何同步机制。服务拆了又合,依赖加了又删,三个月后没人记得回去改那张导出的 PNG。技术评审会上投影出来的架构图,大概率已经和现实对不上了——讨论基于一张错图展开,比没有图更糟。

这不是画图的人偷懒,是机制问题。LikeC4(likec4/likec4,4182 star,TypeScript,MIT 协议)的解法是把方向反过来:架构写成代码,图从代码生成。文件进仓库,走 PR review,有完整的版本历史。

一分钟验证

本地预览只要一条命令:

npx likec4 start

改 DSL,浏览器里的图实时更新。因为不导出图片,也就不存在“最后更新于某年某月”这种落款。

不想装环境,官方 Playground(playground.likec4.dev)直接在浏览器里写。模板仓库在 likec4/template,部署效果看 template.likec4.dev/view/index,StackBlitz 上也能打开。系统学概念走官方 Tutorial

名字里的 “Like” 是关键

LikeC4 受 C4 Model 和 Structurizr DSL 启发,但没有照搬。

C4 Model 把架构固定分四层:Context、Container、Component、Code。多数系统够用,但碰到结构特殊的服务就别扭。LikeC4 的做法是:元素类型、图例符号、嵌套层级数量,全部由使用者自己定义。

这也是它和 Structurizr 的主要区别:Structurizr 给你一套现成 DSL,LikeC4 给你一个可以定制的建模语言。

一个模型,多个视图

所有视图从同一个模型渲染。总览看顶层结构,下钻看节点内部。不需要为每个模块单独画子图——改一处模型,所有视图同步变。“总图和子图对不上”这种经典事故,在这里没有发生的条件。

两个局限,先说清楚

它不做代码分析。 LikeC4 不扫描代码、不自动发现依赖。架构是手写在 DSL 里的,改了代码没改 DSL,图照样过期。它解决的是“图存在哪里、怎么演进”,不解决“图是否真实”——后者仍然要靠 review 流程。如果你期待从代码自动反推架构,这个工具帮不了你。

它有学习成本。 一套 DSL,一套模型组织方式,都要投入时间。类比 Markdown:Markdown 不替你写文章,但它让写作进了版本管理的世界。LikeC4 对架构文档做的是同一件事。

我认为这个交换划算:架构每次变更都进 Git 历史,翻 log 能看到架构决策的完整演变。这比一张精美但过期的图值钱。

项目状态

4182 star,MIT 协议,开发完全靠赞助维持,入口在 OpenCollectiveGitHub Sponsors。遇到问题,Discord 响应最快,深度讨论去 GitHub Discussions

值不值得引入,别看别人的评测。拿自己最熟的那个系统,在 Playground 里写半小时,答案自然有了。

这篇文章对你有帮助吗?

发表回复