菜单

开发指南

相关源文件

本指南提供了在 drawio-desktop 仓库中设置开发环境、理解其代码结构以及参与项目的说明。有关构建和打包应用程序的信息,请参阅 构建与打包

设置开发环境

drawio-desktop 应用程序是围绕核心 draw.io 图形引擎的一个 Electron 封装。设置开发环境涉及克隆两个仓库并配置必要的依赖项。

先决条件

  • Node.js (版本 20 或更高)
  • npm (通常随 Node.js 一起提供)
  • Git 用于版本控制

克隆与安装

Draw.io Desktop 使用 git 子模块来包含核心 draw.io 编辑器。您必须递归克隆才能获取两个仓库。

如果您已克隆仓库但未使用 --recursive 标志,则可以单独初始化子模块。

开发环境设置图

来源: README.md29-36 package.json12

代码结构

仓库组织结构

drawio-desktop 仓库由一个嵌入核心 draw.io 应用程序(包含在 git 子模块中)的 Electron 封装组成。理解这种结构对于开发至关重要。

来源: package.json5-7 README.md29-32

关键文件及其用途

  • src/main/electron.js:Electron 应用程序的主入口点
  • package.json:定义依赖项、脚本和应用程序元数据
  • electron-builder-*.json:用于构建特定于平台的包的配置文件
  • sync.cjs:在构建前同步 draw.io 子模块的脚本
  • draw.io/:包含核心编辑器实现的子模块

NPM 脚本

package.json 文件定义了几个用于开发和构建的脚本。

脚本目的
start在开发模式下运行应用程序(electron .
sync与 draw.io 子模块同步(node ./sync.cjs
release-win构建 Windows 64 位包
release-win32构建 Windows 32 位包
release-win-arm64构建 Windows ARM64 包
release-appx构建 Windows 应用商店包
release-linux构建 Linux 包
release-snap构建 Linux Snap 包

来源: package.json11-19

应用程序架构

应用程序遵循标准的 Electron 架构,具有主进程和渲染进程。

来源: package.json5-7 package.json37-46

运行与调试

运行应用程序

要在开发模式下运行应用程序

出于开发目的,您可以设置环境变量来启用开发模式。

调试

要进行调试,请使用 --enable-logging 标志以获取详细输出。

本地存储位置

应用程序数据存储在特定于平台的目录中。

  • macOS:~/Library/Application Support/draw.io
  • Windows:C:\Users\<USER-NAME>\AppData\Roaming\draw.io\

这些目录包含用户偏好设置、设置和应用程序状态数据。

来源: README.md33-36 README.md51-54

使用子模块

核心 draw.io 编辑器包含为 git 子模块。如果您需要对核心编辑器进行更改,

  1. 导航到子模块目录:cd draw.io
  2. 进行您的更改
  3. 提交并推送更改到 draw.io 仓库。
  4. 返回主仓库并更新子模块引用。

如果您使用 draw.io 仓库的符号链接而不是子模块,您还需要符号链接 node_modules 目录到 drawio/src/main/webapp 中。

来源: README.md38

安全模型

draw.io Desktop 应用程序在设计时将安全性作为首要考虑因素。除了更新过程外,它完全与互联网隔离。该应用程序具有严格的内容安全策略,禁止运行远程加载的 JavaScript。

绝不会将任何图表数据发送到外部,也不会传输有关应用程序使用情况的任何分析数据。这种安全方法意味着某些需要外部连接的功能(如 .vsd 和 Gliffy 导入)在桌面版本中不可用。

有关安全模型的更多详细信息,请参阅 安全模型

来源: README.md10-17

贡献指南

draw.io 项目在贡献方面有特定的政策。除非维护者明确许可,否则该项目通常不对外部贡献开放。这是因为代码库的复杂性以及即使是小的更改也需要进行大量的测试。

报告问题

如果您遇到错误或有功能请求,

  1. GitHub issue tracker 中查看现有问题。
  2. 如果您的问题尚未报告,请创建一个新的 issue 并附带清晰的描述。

报告问题时,请包含

  • 重现问题的步骤
  • 预期行为
  • 实际行为
  • 截图(如果适用)
  • 环境信息(操作系统、应用程序版本)

来源: README.md56-69

开发工作流程图

来源: README.md40-47

支持模式

Draw.io Desktop 的支持通过 GitHub issues 提供,基于合理的努力,无合同义务。对于非付费用户,没有私人票务支持。

需要注意的是,购买 Draw.io for Confluence 或 Jira 的许可并不代表您有权获得 Draw.io Desktop 的商业支持,除非您拥有 Draw.io for Confluence Cloud 的付费高级(高级)版本。

来源: README.md19-24