news 2026/11/6 1:36:16

drawio-desktop 离线完全指南:如何三步跑起 draw.io 桌面版,在内网免费画流程图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
drawio-desktop 离线完全指南:如何三步跑起 draw.io 桌面版,在内网免费画流程图

drawio-desktop 离线完全指南:如何三步跑起 draw.io 桌面版,在内网免费画流程图

【免费下载链接】drawio-desktopOfficial electron build of draw.io项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop

drawio-desktop 是 draw.io 官方维护的 Electron 桌面封装,把整套编辑器(流程图、架构图、UML)打包进本地应用。它解决的是浏览器标签页最尴尬的两个问题:断网就不能画,编辑状态挂在远端。装好后,所有 JavaScript 都内置在本机,打开就能画,图文件不离开你的机器。

整条上手路径只有 3 条命令:克隆、装依赖、启动。当前版本 32.6.1(package.json),要求 Node.js >= 22.12.0(engines字段写明),对外网络行为只有每天一次更新检查——在内网里可以一行关掉。

为什么装在本机,比开标签页更稳

浏览器里画图,一半的挫败来自网络:标签页一关状态悬空,断网直接白屏。桌面版把同样的界面整体搬进本地,差异集中在三件事上:

  • 断网可用:编辑器按"与外网完全隔离"设计,局域网、内网机器直接跑。README.md里说得很直白:draw.io Desktop 的首要目标就是安全与隔离,任何"默认开启外部连接"的功能请求,答案都是 no。
  • 隐私是代码级保证:内容安全策略(CSP,浏览器的安全规则集)禁止执行任何远程加载的 JavaScript,渲染层自身的网络连接也被限制在应用自身范围内。也就是说,应用连"打电话回家"的能力都没有,更谈不上把图内容或用量统计发出去。
  • 许可友好:桌面端按 GPL v3 许可发布,README.md原话——不改代码、接受"as-is"状态,任何用途(包括商用)都可以免费使用。

三条命令跑起来:克隆 → 装依赖 → 启动

前提只有一个:本机 Node.js 版本不低于 22.12.0。

第 1 步:克隆源码(必须带--recursive)

git clone --recursive https://gitcode.com/GitHub_Trending/dr/drawio-desktop

关键在--recursive。draw.io 核心编辑器是以 git 子模块形式挂在drawio/目录下的(见.gitmodules),不带这个参数,drawio/就是个空文件夹,后面一步都跑不动。预期结果:drawio/里能看到完整的 draw.io 代码。已经克隆过但忘了加参数的,补一句git submodule update --init即可。

第 2 步:装依赖

npm install

预期结果:node_modules生成完毕,Electron(^44.9.3)等开发依赖就位,无报错即成功。

第 3 步:启动

npm start

start脚本实际执行的就是electron .(入口是 src/main/electron.js)。预期结果:几秒后弹出 draw.io 主窗口,左侧形状库、中间画布直接可用——打开就是一张Untitled Diagram.xml,拖个形状进去就能画了。

启动后行为异常想定位卡在哪一步,换带日志的命令再跑一次:

npm start --enable-logging

预期结果:控制台持续输出主进程日志,窗口行为与平时一致。

黑盒拆解:这个应用到底在跑什么

桌面版的仓库结构很克制,核心就三层:

文件 / 目录干什么的
src/main/electron.js主进程入口,约 4500 行,窗口创建、更新检查、日志、CLI 参数解析全在这
src/main/electron-preload.js预加载脚本,用 contextBridge 隔离主进程与渲染层,编辑器只拿到request等几个受控接口
drawio/draw.io 核心编辑器,git 子模块,真正的"画图画"代码都在这
sync.cjs构建前从drawio/VERSION读版本号写回package.json,顺带生成disableUpdate.js;drawio/VERSION不存在时直接报错退出
electron-builder-win.json、electron-builder-linux-mac.json各平台安装器的打包配置
src/test/12 个单元测试文件,npm test用node --test跑 CLI 参数、窗口边界、更新模式等模块

一个容易被忽略的细节:版本号不由本仓库决定。sync.cjs 会严格校验drawio/VERSION的格式(必须是x.y.z),校验失败直接终止——所以子模块没拉全时,构建会在这里先炸。

你的数据落在哪,网络行为只剩什么

本地数据。Local Storage 与 Session Storage 都落在系统应用数据目录:

  • macOS:~/Library/Application Support/draw.io
  • Windows:C:\Users\<用户名>\AppData\Roaming\draw.io\

更新机制。应用每天最多连一次 github.com 查新版本,更新包从 GitHub 名下的 AWS S3 桶下载。装到之后怎么更新,取决于安装方式,逻辑在 src/main/update-mode.js:

安装方式更新模式
Windows.exe安装器、macOS、AppImage后台自动下载,退出或点"Restart to Update"时安装
MSI、Windows zip 便携版、deb/rpm只提示有新版本,给发布页链接,手动升级
Microsoft Store、Snap、Flatpak交给商店管,应用自身不检查

内网环境想彻底关断,两个开关任选其一(实现在 src/main/electron.js):

  • 环境变量DRAWIO_DISABLE_UPDATE=true
  • 启动参数--disable-update

⚠️一个例外场景:图文件里如果嵌入了 URL 形式的外部资源(图片、背景、字体),打开图时会去拉取这些资源以便正常渲染,这个请求会把你的 IP 暴露给对方服务器。图的内容本身不会外发,但陌生来源的图文件还是别轻易打开。

进阶玩法:命令行批量导出图

桌面版自带完整的 CLI,这是很多人不知道但极好用的一块(参数定义见 src/main/args.js):

  • -x / --export:批量导出,输入除了 .drawio 文件,还支持.vsdx、.csv、Mermaid(.mmd/.mermaid)
  • -f / --format:输出格式,pdf(默认)、png、jpg、svg、xml、html
  • --layout:打开图后先跑自动布局,预设名有verticalFlow、horizontalFlow、verticalTree、horizontalTree、radialTree、organic
  • --normalize:修复模型——把边挂到端点最近公共祖先、给缺几何信息的边补标准几何,适合机器生成的图
  • -e / --embed-diagram:在 PNG/SVG/PDF 里嵌入图副本,导出的图点开还能编辑
  • -a / --all-pages、-p / --page-index:多页图按页导出

典型场景:一批 Mermaid 文件丢给--export配--layout,直接产出自动排版的 SVG/PNG,CI 里就能用。

容易踩的坑

  • 克隆忘加--recursive:drawio/是空的,npm run sync会明确报drawio/VERSION not found。这是最高频的失败点。
  • 单实例限制:draw.io 每个用户只允许一个运行实例。官方应用已在运行时再启动你自建的副本,新窗口会开在官方应用里,看不到你的改动——先退出正在跑的 draw.io。
  • 给自己打构建要关更新:npm run sync -- disableUpdate会生成disableUpdate.js把自动更新锁死,否则你的修改版会被官方更新"悄悄改回去"。详见 doc/BUILDING_FOR_PERSONAL_USE.md,其中DRAWIO_UNSIGNED=true是明确的"我同意构建未签名版本"开关。
  • 依赖放错位置:draw.io 子模块war/package.json的 dependencies 会原样打进安装包;electron 这类开发期才用的包必须放 devDependencies。DEVELOPMENT.md 里有专门警告。
  • 子模块更新顺序:先提交子模块变更、打版本 tag,再回本仓库推送——CI 构建由推本仓库触发,不是由 draw.io 触发。
  • 不接收外部贡献:项目长期对 PR 关闭(维护者许可的例外极少),bug 和功能请求走仓库 issue。非付费用户没有私人工单渠道,购买 Confluence/Jira 版本也不包含 desktop 支持。

接下来看什么

  • DEVELOPMENT.md:开发环境、CI 构建与签名细节
  • doc/RELEASE_PROCESS.md:官方发布、签名与构建流程
  • doc/BUILDING_FOR_PERSONAL_USE.md:给自己打一个未签名构建的完整步骤
  • SECURITY.md:安全策略

【免费下载链接】drawio-desktopOfficial electron build of draw.io项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 1:32:58

6步走通 lego 开源贡献:ACME 证书客户端的参与开发指南

6步走通 lego 开源贡献&#xff1a;ACME 证书客户端的参与开发指南 【免费下载链接】lego Lets Encrypt/ACME client and library written in Go 项目地址: https://gitcode.com/gh_mirrors/le/lego lego 是一个用 Go 编写的 ACME 客户端与库&#xff0c;帮你的站点自动…

作者头像 李华
网站建设 2026/11/6 1:32:05

CDD文件DID在CANdelaStudio和CANoe显示名称不一致

问题描述开发完一些诊断的DID&#xff0c;需要进行自测&#xff0c;发现一个奇怪的问题&#xff0c;明明是同一个CDD文件&#xff0c;它的DID名称在CANdelaStudio和CANoe显示完全不是同一个。问题分析一开始怀疑是配置有问题&#xff0c;因为在CANdelaStudio软件里面&#xff0…

作者头像 李华
网站建设 2026/11/6 1:30:59

【LLM】第二章:HuggingFace入门+大模型初体验

【LLM】第二章&#xff1a;HuggingFace入门学习 说明&#xff1a;学习大模型&#xff0c;会使用HuggingFace是必备的&#xff0c;因为HuggingFace是AI大模型的平台。HuggingFace之于大模型&#xff0c;就像pytorch之于神经网络一样。所以本章我们先入门一下HuggingFace的基本操…

作者头像 李华
网站建设 2026/11/6 1:30:45

foobox:三步装好 foobar2000 多面板中文皮肤,5 分钟换个新界面

foobox&#xff1a;三步装好 foobar2000 多面板中文皮肤&#xff0c;5 分钟换个新界面 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobox 是给 foobar2000 做的开源中文皮肤配置包。跑一遍安装包…

作者头像 李华
网站建设 2026/11/6 1:29:41

KeymouseGo:录一遍操作,自动回放 100 遍

KeymouseGo&#xff1a;录一遍操作&#xff0c;自动回放 100 遍 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo 上午十点&a…

作者头像 李华
网站建设 2026/11/6 1:29:38

【RHCA+】valgrind命令(检测内存泄漏)

“ 目录&#xff1a;RHCA -> 12 系统监控 -> 33 valgrind命令&#xff08;检测内存泄漏&#xff09; ”内存调试和性能分析工具&#xff0c;常用于检测内存泄漏、非法内存访问、使用未初始化变量等&#xff1b;语法格式&#xff1a;valgrind [参数] 被检测命令此命令会降…

作者头像 李华