☰
nodeterm 打包与自动更新完全指南:dmg、AppImage、deb/rpm 与 Windows NSIS 全平台发布
2026/10/11 10:07:08 网站建设 项目流程

【免费下载链接】nodeterm

Node-based terminal manager for AI coding agents — tmux-backed terminals and parallel agent sessions as draggable nodes on an infinite pan/zoom canvas. macOS, Linux, and a browser Server Edition.

项目地址:https://gitcode.com/gh_mirrors/no/nodeterm
点击查看免费下载

nodeterm 是面向 AI 编码代理(AI coding agents)的 Node 终端管理器:基于 tmux 的终端与并行 agent 会话,都以可拖拽节点的形式铺在无限缩放画布上,支持 macOS、Linux 和浏览器版 Server Edition。本文带你完整走一遍nodeterm 打包与自动更新流程——从 macOS dmg、Linux AppImage/deb/rpm 到 Windows NSIS 安装包,新手也能顺利产出自己的全平台发行版 📦

30 秒看懂 nodeterm 打包工具链

nodeterm 基于 Electron,使用electron-vite构建、electron-builder打包。所有发布配置集中在 package.json 的build字段,所有打包命令定义在scripts中:

命令平台产物适用场景
npm run distmacOS(arm64)dmg / zip本地打包测试
npm run dist:linuxLinux(x64)AppImage / deb / rpm本地打包测试
npm run dist:winWindows(x64)NSIS 安装包 / zip本地打包测试
npm run releasemacOS(arm64 + x64)dmg / zip正式对外发布

四条命令遵循同一个套路:先生成图标 → 构建应用 → 交给 electron-builder 出包。其中 npm run dist 会先执行make-icon由 scripts/make-icon.mjs 生成各平台图标,再由 electron-builder 按build.mac/build.linux/build.win配置产出安装包。

两个新手容易忽略的细节:

  • 原生模块会自动重编译:postinstall钩子(package.json)会 patchnode-pty并执行electron-rebuild,确保 node-pty、smart-whisper 等原生依赖匹配 Electron 的 ABI。如果打包报 node-pty 相关错误,先跑npm run rebuild。
  • 本地包默认关闭自动更新:所有dist*命令都注入nodeTermUpdates=disabled元数据(见 src/main/updater.ts 的注释),让本地包不再每 6 小时轮询生产更新源、刷 404 日志;而release命令不加该标记,发布出去的包保留完整自动更新能力。

macOS 一键打包 dmg 与 zip

执行下面一条命令即可在dist/目录得到 macOS 安装包:

npm run dist

这条命令(package.json)等价于:

npm run make-icon && npm run build && \ electron-builder --mac --arm64 --publish never \ -c.mac.identity=null -c.mac.notarize=false \ -c.extraMetadata.nodeTermUpdates=disabled

macOS 打包要点(package.json):

  • 双架构 + 双格式:dmg与zip各出 arm64、x64 两份。zip 版是自动更新实际下载使用的格式;
  • 签名与公证:本地构建通过identity=null、notarize=false跳过签名;正式release则要求签名 + 公证,否则 macOS 无法静默自更新,只能提示用户手动下载;
  • 原生模块解包:asarUnpack将 node-pty、smart-whisper、sharp 等原生模块移出 asar 归档(package.json),保证.node二进制可加载;
  • 附带二进制:mac 的extraResources内置了resources/bin/tmux(package.json),这也是“tmux-backed 终端”能开箱即用的原因。

Linux 一次构建 AppImage、deb、rpm 三种发行版

npm run dist:linux

按 build.linux 配置,一次运行同时产出AppImage、deb、rpm三种 x64 包,应用分类为Development。产物同样落在dist/目录,文件名形如nodeterm-<version>-x64.AppImage、nodeterm_<version>_amd64.deb、nodeterm-<version>-1.x86_64.rpm。

⚠️自动更新的一个重要差异:electron-updater 在 Linux 上只有 AppImage 能自我替换重启(依赖APPIMAGE环境变量),deb/rpm 安装则降级为「显示 Download 链接、用户手动安装新包」。这一判断在 src/shared/update-platform.ts 中定义,属于有意设计而非缺陷。

Windows NSIS 一键安装包与安全预检

npm run dist:win

Windows 配置(build.win):

  • oneClick 一键安装:nsis.oneClick: true、perMachine: false,默认按当前用户安装,产物命名nodeterm-Setup-<版本>.exe(package.json);
  • 会话宿主随行:extraResources把 session-host 及其 node-pty 依赖一并打包,供 Windows 上的持久终端会话使用;
  • 安装预检:build/installer.nsh 覆写了 NSIS 内置的「杀进程」检查,改为运行 scripts/windows-update-preflight.ps1 做进程探测——若 nodeterm 或后台 session host 仍在运行,安装会被安全地阻止并弹出引导,提示用户先在应用内执行Prepare for update(Ctrl+K 或更新卡片),而不是粗暴结束用户正在运行的会话。这是 Windows 端更新安全的核心设计(背景见 docs/windows-session-host.md)。

nodeterm 自动更新机制全解

自动更新由 electron-updater 驱动,核心逻辑在 src/main/updater.ts:

  1. 启动即检查,此后每 6 小时轮询一次更新源;
  2. 支持在设置里手动检查,并把available → progress → downloaded全生命周期转发给渲染层的更新卡片;
  3. 下载完成后弹出系统通知,用户点击「重启并安装」触发autoUpdater.quitAndInstall()(src/main/updater.ts)。

更新源是一个静态目录,源码见 site/updates/:每次发布把dist/里的latest-mac.yml、dmg/zip 及其.blockmap增量校验文件部署过去,electron-updater 读取 yml 即可发现新版本;官网的下载按钮也会自动跟随该 yml 更新,无需改代码。

为了不在错误场景下误导用户,nodeterm 把更新能力抽象为四种投递模式(src/shared/update-platform.ts):

模式含义用户看到什么
self-install有更新源且可自装(macOS、AppImage、已发布的 Windows)下载进度 → 重启更新
manual-install有更新源但不可自装(deb/rpm)「有新版 vX.X.X,点击 Download」
no-channel本构建无更新源(本地dist*包)明确告知无更新通道,指向下载页
dev未打包的开发模式静默返回「已是最新」

常见问题快速排查

现象原因与解法
本地dist*包日志刷latest*.yml 404检查是否漏掉nodeTermUpdates=disabled标记;带标记的包应提示「无更新通道」
macOS 更新后无法静默安装构建未签名/未公证;正式发布需走签名 + 公证流程(release命令)
Linux deb/rpm 不自动下载安装设计如此,只能手动下载新包,卡片会给出 Download 链接
Windows 安装程序拒绝继续应用或 session host 正在运行;先在应用内执行 Prepare for update(Ctrl+K)
打包时 node-pty 报错原生模块未针对 Electron ABI 重编译,执行npm run rebuild

相关资料

  • 构建与运行环境说明:CONTRIBUTING.md
  • 各版本发布记录:docs/release-notes/
  • 更新源目录说明:site/updates/README.md
  • 打包脚本:scripts/make-icon.mjs、scripts/release-notes.mjs

掌握上面四条命令与四种更新模式后,你就拥有了 nodeterm 全平台发布与自动更新的完整能力:dist*系列出包、release出正式 macOS 包、更新源目录负责分发,剩下的交给 electron-updater。🚀

【免费下载链接】nodeterm

Node-based terminal manager for AI coding agents — tmux-backed terminals and parallel agent sessions as draggable nodes on an infinite pan/zoom canvas. macOS, Linux, and a browser Server Edition.

项目地址:https://gitcode.com/gh_mirrors/no/nodeterm
点击查看免费下载

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询