Skip to main content
On this page

配置

即将于 Deno 2.9 提供

deno desktop 随 Deno v2.9.0 一同发布,但尚未进入稳定版。要立即试用它,请运行 deno upgrade canary 来安装 canary 构建。随着功能趋于稳定,命令、配置键和 TypeScript API 仍可能发生变化。

deno desktop 的所有配置都位于 deno.json 中的 desktop 块里。大多数字段都是可选的;即使项目根本没有 desktop 块,也仍然可以编译,并使用合理的默认值。

完整示例 Jump to heading

deno.json
{
  "name": "my-app",
  "version": "1.4.0",
  "desktop": {
    "app": {
      "name": "我的应用",
      "identifier": "com.example.myapp",
      "icons": {
        "macos": "./icons/app.icns",
        "windows": "./icons/app.ico",
        "linux": "./icons/app.png"
      }
    },
    "backend": "cef",
    "output": {
      "macos": "./dist/MyApp.app",
      "windows": "./dist/MyApp",
      "linux": "./dist/my-app"
    },
    "macos": {
      "codesignIdentity": "Developer ID Application: Acme, Inc. (TEAMID)"
    },
    "release": {
      "baseUrl": "https://releases.example.com/my-app"
    },
    "errorReporting": {
      "url": "https://errors.example.com/report"
    }
  }
}

app Jump to heading

编译进二进制文件的元数据。

app.name Jump to heading

应用的显示名称。用于窗口标题默认值、macOS 菜单栏应用名称、Windows 任务栏提示以及 Linux .desktop 条目名称。若未设置,则回退到 deno.json 根部的 name 字段。

app.identifier Jump to heading

反向 DNS 的 bundle / 应用标识符(例如 com.example.myapp)。用于 macOS 的 CFBundleIdentifier、Linux .desktop 文件标识符以及 Windows AppUserModelID。未设置时,会生成一个形如 com.deno.desktop.<app-slug> 的合成值。macOS 需要稳定的标识符才能授予通知权限,因此任何使用 通知 的应用都应设置一个真实的标识符。

app.icons Jump to heading

按平台区分的图标路径,相对于 deno.json

"icons": {
  "macos":   "./icons/app.icns",
  "windows": "./icons/app.ico",
  "linux":   "./icons/app.png"
}

对于 macOS 和 Linux,你也可以传入一个 PNG 数组,在构建时组装成多分辨率图标:

"icons": {
  "macos": [
    { "path": "./icons/16.png",  "size": 16  },
    { "path": "./icons/32.png",  "size": 32  },
    { "path": "./icons/128.png", "size": 128 },
    { "path": "./icons/256.png", "size": 256 },
    { "path": "./icons/512.png", "size": 512 }
  ]
}

.icns(macOS)和 .ico(Windows)输入会原样透传。PNG 会根据平台被组装进相应的容器中。

如果某个平台没有设置 icons 条目,则会使用默认的 Deno 图标。

backend Jump to heading

要嵌入的 Web 渲染引擎。可选 "cef""webview""raw"。默认值:"webview"

"backend": "webview"

CLI 标志 --backend 会在单次构建中覆盖此设置,但只接受 cefwebview;如果要使用 raw,请在 deno.json 中设置。有关权衡和支持的目标平台,请参见 Backends

output Jump to heading

按平台区分的输出路径。

"output": {
  "macos":   "./dist/MyApp.app",
  "windows": "./dist/MyApp",
  "linux":   "./dist/my-app"
}

路径的扩展名决定生成内容:

macOS 上的扩展名 输出
.app macOS 应用程序包
.dmg DMG 磁盘映像(通过 hdiutil 构建)
Windows 上的扩展名 输出
(无)/ 目录 带有 .bat 启动器和 DLL 的应用目录
Linux 上的扩展名 输出
(无)/ 目录 带有启动脚本的应用目录
.AppImage 单文件 .AppImage 打包

CLI 标志 --output 会在单次构建中覆盖此设置。

macos Jump to heading

macOS 专用构建选项。

macos.codesignIdentity Jump to heading

用于对 macOS bundle 进行签名的代码签名身份,例如 "Developer ID Application: Acme, Inc. (TEAMID)",或者用 "-" 表示显式的 adhoc 签名。未设置时,deno desktop 仍会对 bundle 进行 adhoc 签名,使其具有稳定的代码身份(通知权限所需),但结果在未进一步签名的情况下不能分发。设置真实的 Developer ID 身份可生成可公证的 bundle。参见 Distribution

release Jump to heading

自动更新系统的配置。

release.baseUrl Jump to heading

发布服务器的基础 URL。运行时会获取 <baseUrl>/latest.json,并根据此 URL 下载补丁文件。有关完整的清单格式和补丁流程,请参见 Auto-update

"release": {
  "baseUrl": "https://releases.example.com/my-app"
}

这是运行时自动轮询的唯一服务器 URL。 Deno.autoUpdate() 默认使用此 URL,但可以在每次调用时覆盖。

errorReporting Jump to heading

捕获未捕获异常、未处理的拒绝和 panic,显示原生提示,并可选择向服务器 POST 一份 JSON 报告。

errorReporting.url Jump to heading

"errorReporting": {
  "url": "https://errors.example.com/report"
}

如果未设置,错误报告将处于“仅提示”模式:未捕获的错误仍会显示原生提示,但不会发送报告。

有关报告模式,请参见 Error reporting

工作目录与资源 Jump to heading

编译后的二进制文件运行时,其当前工作目录设置为用户的 cwd,而不是二进制所在目录。如果你的应用需要查找相对于自身的文件(框架构建输出、静态资源),请使用 import.meta 或框架自身的解析方式;不要假设 Deno.cwd()

对于框架项目,这一点会自动处理:检测到的构建输出(.next/dist/_fresh/.output/ 等)会被嵌入到二进制的虚拟文件系统中,并在运行时自动解压,因此框架代码可以在其自己的工作目录下找到它们。

校验 Jump to heading

deno desktop 会在开始时对配置进行校验:

  • backend 必须是列出的值之一。
  • 图标路径必须解析到已存在的文件。
  • 输出路径必须可写。
  • release.baseUrl 必须能够解析为 URL。

错误会连同出错的 deno.json 位置一起报告。

Last updated on

Did you find what you needed?

编辑此页面
Privacy policy