内网断网也能画流程图:drawio-desktop 从克隆到弹出窗口的最短路径

内网断网也能画流程图:drawio-desktop 从克隆到弹出窗口的最短路径

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

内网开发机上打开 draw.io 标签页,断网就白屏,画了一半的图直接悬空。把 drawio-desktop 桌面版装进这台机器,编辑器代码全部内置本机,打开就能画,流程图、架构图都断网可用。

它替你省掉了什么

  • 标签页一关、网一断,浏览器里画到一半的图就悬空;桌面版把整套编辑器打进应用,窗口关了再开,图还在本机。
  • 浏览器版加载远端资源,弱网下转圈;桌面版所有 JavaScript 内置,局域网机器、内网环境直接跑得动。
  • 个人和公司使用都免费:核心编辑器按 Apache 2.0 许可发布,不改动代码、接受 as-is 状态即可商用。

从克隆到弹窗:断网环境最短安装路径 🚀

先确认本机 Node.js 不低于 22.12.0(package.json 的engines字段写死了下限),然后克隆、装依赖、启动,三下就完事:

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

--recursive不能省:draw.io 核心是以 git 子模块挂在drawio/下的,漏掉它那个目录就是空的,后面什么都跑不起来。装完预期node_modules生成完毕、无报错。

然后npm start:

npm start

start脚本执行的就是electron .,几秒后主窗口弹出,左侧形状库、中间画布直接可用。

启动后想定位卡在哪一步,加日志参数再跑一次:

npm start --enable-logging

主进程日志持续打到终端,窗口行为与平时一致,对着日志就能看出停在哪一步。

数据落点与网络边界

  • 图与偏好存 Local Storage / Session Storage,都在系统应用数据目录:macOS 是~/Library/Application Support/draw.io,Windows 是C:\Users\<用户名>\AppData\Roaming\draw.io\。
  • 对外网络行为很克制:默认最多每天查一次新版本,更新包从 GitHub 关联的 S3 桶下载。
  • 内网想彻底断干净:设环境变量DRAWIO_DISABLE_UPDATE=true,或启动时传--disable-update,两者任选其一。
  • 主进程给所有内容注入 CSP,script-src、connect-src都锁在'self',渲染层加载不了任何远程脚本;file://请求也只放行应用自身目录。
  • ⚠️ 唯一例外:图文件里嵌入了 URL 形式的外部资源(图片、背景、字体)时,打开会向对方服务器发请求拉资源,你的 IP 会暴露过去。图内容本身不外发,但陌生来源的 .drawio 文件别急着双击。

仓库里各模块在干嘛 🔍

  • src/main/electron.js —— 主进程入口,窗口创建、CSP 注入、更新检查都在这一个文件里
  • src/main/args.js —— 解析启动参数,--disable-update在这里注册
  • src/main/update-mode.js —— 判定更新模式:auto 后台下载、notify 只提示、off 不查
  • sync.cjs —— 构建前从 drawio 子模块读版本号,并同步安装子模块的 dependencies
  • electron-builder-win.json、electron-builder-linux-mac.json —— Windows 与 Linux/macOS 的打包配置
  • src/test/ —— CLI 参数、窗口边界等模块的单元测试,npm test跑

踩过的坑,替你问一遍

clone 完drawio/是空的 →因为 draw.io 核心是子模块,普通 clone 不拉。用--recursive克隆,或事后git submodule update --init补拉。

往子模块里加了个依赖,怎么全进安装包了 →构建器会把 drawio 子模块 war/package.json 的 dependencies 原样打进安装包,DEVELOPMENT.md 专门警告过;electron 这类开发期才用的包必须放 devDependencies。

改了子模块,CI 却没动静 →因为 CI 由本仓库的推送触发,版本号取自子模块的 VERSION 文件。顺序反了构建用的还是旧版本:先在子模块里提交变更、打版本 tag,再回本仓库推送。

想报安全漏洞走哪 →非付费用户没有私人工单渠道,一般问题走仓库 issue 系统;安全漏洞按 SECURITY.md 走私报渠道,不要公开发 issue。

DEVELOPMENT.md 讲开发环境与 CI 细节;doc/RELEASE_PROCESS.md 讲发布、签名与构建流程;doc/BUILDING_FOR_PERSONAL_USE.md 教你给自己打一个未签名构建。接下来先翻 DEVELOPMENT.md,子模块和 CI 的关系都写在那份里。

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

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