打包构建
打包构建
介绍
bt_app 支持构建桌面项目为一个单文件程序。
执行打包
在项目目录运行:
./bt_app.exe build
如果当前目录没有 app.json 但存在 index.html,构建前会先生成默认 app.json。默认配置会包含 app.json、index.html 和常见前端构建目录 assets/**。页面引用的其他根目录资源、图片目录或自定义静态目录仍需要手动写入 resources。
输出位置:
dist/{app.name}.exe
构建时会先在 dist 中生成临时 exe,完成图标、元信息、Bundle 注入和读回校验后才替换最终输出。这样中途失败不会留下一个没有 Bundle 的半成品 exe。若 dist/{app.name}.exe 正在运行或被其他程序占用,构建会明确失败并提示先关闭目标程序后重试。
桌面构建只生成单个应用 exe,不会额外写出 FFI 许可证旁路文件。
资源收集
resources 支持普通文件、目录和 glob:
{ "resources": [ "index.html", "main.bt", "assets/**", "pages/*.html" ], "exclude": [ "assets/test/**", "assets/*.bak" ] }
构建阶段会自动加入必要资源,包括 app.json、static 入口、主脚本、server.bt 和图标。最终打包集合按 resources - exclude 计算,普通目录和 assets/** 都会递归收集目录下所有文件。
图标和元信息
配置 app.icon 后,构建会校验图标文件存在,并在 Windows 上写入输出 exe 的图标资源:
{ "app": { "name": "IconDemo", "icon": "logo.ico", "description": "图标示例", "copyright": "Copyright 2026 BT" } }
当前 app.icon 只支持 .ico。description 和 copyright 会写入 Windows exe 版本资源。
文件关联可以声明独立的文档图标。构建器会把每个 file_associations[].icon 嵌入 exe 的独立 PE 图标资源组;关联文件使用文档图标,资源管理器右键菜单仍使用应用主图标:
{ "app": { "icon": "icon.ico", "file_associations": [ { "extensions": ["md", "markdown"], "icon": "markdown.ico", "description": "Markdown 文档", "context_menu": "以 M++ 打开" } ] } }
关联图标仅支持项目内相对 .ico 路径,不需要额外加入 resources。省略 file_associations[].icon 时,文件类型继续复用 app.icon;没有配置应用图标时则使用 bt_app 内置图标。
控制台
dev.console 为 false 时,构建会把 Windows exe 子系统改成 GUI,双击运行时不弹出控制台。
{ "dev": { "console": false } }
开发阶段建议使用 dev.console:true,便于查看启动摘要、错误和 echo() 输出。
其他命令
./bt_app.exe run ./bt_app.exe bundle-check
-
run:运行当前目录项目。 -
bundle-check:检查当前 exe 是否包含 Bundle,并打印 Bundle 文件列表。
平台说明
当前构建逻辑输出单个 .exe 文件,Windows 下会处理 GUI 子系统、exe 图标和元信息。