electrobun-dev
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseElectrobun Dev Mode
Electrobun 开发模式
Commands
命令
bash
electrobun dev # build (dev env) once, then launch app
electrobun dev --watch # build, launch, then watch for changes and rebuild+relaunchShorthand via package.json (standard templates):
bash
bun start # → electrobun dev
bun run dev # → electrobun dev --watchbash
electrobun dev # 构建一次(dev 环境),然后启动应用
electrobun dev --watch # 构建、启动,然后监听变化并重新构建和启动应用可通过 package.json 使用快捷命令(标准模板):
bash
bun start # → electrobun dev
bun run dev # → electrobun dev --watchWhat Happens on electrobun dev
electrobun dev执行 electrobun dev
时的流程
electrobun dev- Reads
electrobun.config.ts - Downloads any missing native binaries (Bun, launcher, WGPU/CEF if configured)
- Bundles via
build.bun.entrypointin dev mode (no minify, sourcemaps inline)Bun.build() - Bundles each entrypoint
build.views.* - Copies files to build output
build.copy - Skips codesign and notarization
- Writes app bundle to
build/dev-<os>-<arch>/ - Launches the app, streaming stdout/stderr to your terminal
- 读取
electrobun.config.ts - 下载缺失的 native binaries(Bun、launcher,以及已配置时的 WGPU/CEF)
- 在 dev 模式下通过 打包
Bun.build()(不压缩,sourcemaps 内联)build.bun.entrypoint - 打包每个 entrypoint
build.views.* - 将 文件复制到构建输出目录
build.copy - 跳过 codesign 和 notarization
- 将 app bundle 写入
build/dev-<os>-<arch>/ - 启动应用,并将 stdout/stderr 流式输出到终端
Watch Mode (--watch
)
--watchWatch 模式(--watch
)
--watchAfter initial build+launch, watch mode monitors:
- Dir containing
build.bun.entrypoint - Dir(s) containing each entrypoint
build.views.* - Dirs listed in (extra paths)
build.watch - Dirs of files listed in
build.copy
Debounce: 300ms — rapid saves are coalesced into one rebuild.
Ignored automatically: , , , and patterns in .
build/artifacts/node_modules/build.watchIgnoreOn change: kills running app → rebuilds → relaunches.
完成首次构建和启动后,watch 模式会监控:
- 包含 的目录
build.bun.entrypoint - 包含各个 entrypoint 的目录
build.views.* - 中列出的目录(额外路径)
build.watch - 中所列文件所在的目录
build.copy
Debounce: 300ms——快速连续保存会合并为一次重新构建。
自动忽略: 、、,以及 中的 patterns。
build/artifacts/node_modules/build.watchIgnore发生变化时: 终止正在运行的应用 → 重新构建 → 重新启动应用。
Extra watch paths
额外的 watch 路径
typescript
// electrobun.config.ts
build: {
watch: ["src/shared/", "assets/"],
watchIgnore: ["src/**/*.test.ts", "src/**/*.spec.ts"],
}typescript
// electrobun.config.ts
build: {
watch: ["src/shared/", "assets/"],
watchIgnore: ["src/**/*.test.ts", "src/**/*.spec.ts"],
}CEF DevTools (Chromium inspector)
CEF DevTools(Chromium inspector)
When using or , the CEF renderer exposes Chrome DevTools at:
renderer: "cef"defaultRenderer: "cef"http://localhost:9222Open in any Chrome/Chromium browser while the app is running. Lists all active renderer pages — click to inspect.
Note: DevTools are only available in builds. They are not exposed in or .
devcanarystable使用 或 时,CEF renderer 会在以下地址暴露 Chrome DevTools:
renderer: "cef"defaultRenderer: "cef"http://localhost:9222应用运行期间,可在任意 Chrome/Chromium browser 中打开该地址。页面会列出所有活动的 renderer pages,点击即可进行检查。
注意:DevTools 仅在 builds 中可用,不会暴露给 或 。
devcanarystableNative WebView Debugging (macOS)
Native WebView 调试(macOS)
For (WKWebView), enable the developer extras:
renderer: "native"typescript
// In src/bun/index.ts — call openDevTools() on the BrowserView instance
const view = new BrowserView({ ... });
view.openDevTools(); // Opens Safari Web Inspector (uses private WKWebView _inspector API)Or in Safari: Develop → [Your App] → [webview name]
对于 (WKWebView),请启用 developer extras:
renderer: "native"typescript
// 在 src/bun/index.ts 中——对 BrowserView 实例调用 openDevTools()
const view = new BrowserView({ ... });
view.openDevTools(); // 打开 Safari Web Inspector(使用私有 WKWebView _inspector API)也可以在 Safari 中操作:Develop → [Your App] → [webview name]
Debugging Tips
调试技巧
- Console output: All from bun-side code appears in the terminal. Renderer-side
console.logonly appears in devtools (not terminal).console.log - RPC tracing: Add to request/message handlers to trace cross-process calls.
console.log - Source maps: Dev builds include inline source maps. Stack traces point to source lines.
.ts - Slow reload? Add only changed dirs to rather than broad patterns.
build.watch - App not relaunching? If the app process is holding a file lock, kill it manually:
pkill -f "<AppName>"
- Console 输出:bun-side 代码中的所有 都会显示在终端中。Renderer-side 的
console.log仅显示在 devtools 中,不会输出到终端。console.log - RPC tracing:在 request/message handlers 中添加 ,以跟踪跨进程调用。
console.log - Source maps:Dev builds 包含内联 source maps。Stack traces 会指向 源代码行。
.ts - 重新加载较慢? 仅将发生变化的目录添加到 ,避免使用宽泛的 patterns。
build.watch - 应用未重新启动? 如果应用进程持有 file lock,请手动终止:
pkill -f "<AppName>"
Build Output (dev)
构建输出(dev)
build/dev-macos-arm64/
└── <AppName>-dev.app/
└── Contents/
├── MacOS/
│ ├── launcher # native launcher
│ └── main.js # bundled bun entrypoint
├── Resources/
│ ├── <viewname>/ # bundled renderer
│ └── bun # bun runtime binary
└── Info.plistbuild/dev-macos-arm64/
└── <AppName>-dev.app/
└── Contents/
├── MacOS/
│ ├── launcher # native launcher
│ └── main.js # 打包后的 bun entrypoint
├── Resources/
│ ├── <viewname>/ # 打包后的 renderer
│ └── bun # bun runtime binary
└── Info.plist