使用 EXE 工具将全栈 Web 应用打包成单一可执行文件
介绍
在构建现代 Web 应用时,开发者经常需要在多种运行时、构建工具和部署平台之间切换。如果你需要保留服务器端的功能,例如 SSR、API 端点或身份验证,将整个应用打包成轻量级可执行文件可以简化分发。
EXE – Executable 的缩写,是一款免费、MIT 许可证的工具,可将任何全栈框架(SvelteKit、Nuxt、TanStack)打包成一个零运行时依赖的单一二进制文件。通过在构建阶段使用 Bun,EXE 能够保留框架原生的服务器能力,同时生成即时、跨平台的二进制文件。
为什么选择 EXE? * 简洁 – 运行时无需安装 Docker 或 Node。 * 安全 – 本地运行,保持用户数据私密。 * 可移植 – 二进制文件可在 Windows、macOS、Linux 甚至嵌入式设备上运行。 * 高速 – 一个命令即可启动应用;无须容器编排。
主要功能
| 功能 | 说明 |
|---|---|
| 零运行时依赖 | 你的应用以单个静态二进制文件发布——不依赖主机上额外文件或库。 |
| 全栈保留 | 保留 SSR、API 路由、服务器中间件和身份验证。 |
| 跨平台 | 生成 Windows、Linux、macOS 及 ARM 架构的二进制文件。 |
| Docker 伴侣 | 如果你为 linux-x64 编译,EXE 会自动生成 Dockerfile,便于通过 Fly.io 或任何容器运行时快速自托管。 |
| CLI 与适配器插件 | 为 SvelteKit (@jesterkit/exe-sveltekit) 提供单独适配器,并实验性支持 Nuxt/TanStack。 |
| 开源并可扩展 | GitHub 托管,欢迎贡献;插件可为其他框架编写。 |
快速上手
下面给出 SvelteKit 的示例配置。使用 Nuxt 或 TanStack 的流程类似。
# 1️⃣ 安装适配器
npm install @jesterkit/exe-sveltekit
将其添加到 svelte.config.js:
// svelte.config.js
import adapter from '@jesterkit/exe-sveltekit';
export default {
kit: {
adapter: adapter({
binaryName: 'my-app',
}),
},
};
运行构建管线:
npm run build
# 可执行文件已生成在 ./dist/my-app
./dist/my-app
你的应用将在 http://localhost:3000 启动,与标准 SvelteKit 生产构建的行为完全一致,仅为单一二进制文件。
高级设置
| 选项 | 用法 |
|---|---|
--target |
linux-x64、win32-x64、darwin-arm64 等 |
--output |
自定义编译后二进制文件的位置 |
--docker |
即使不针对 linux-x64,也强制生成 Dockerfile |
示例 – 编译 Linux 二进制并生成 Dockerfile:
npm run build -- --target=linux-x64 --docker
通过 Fly.io 部署
若目标为 linux-x64,fly launch 帮手会提供即用的 Fly.io 配置。直接运行:
fly launch
Fly 负责托管、域名分配以及零停机重载。
使用场景
| 场景 | 优势 |
|---|---|
| SaaS 演示商店 | 让客户在本地快速创建副本进行试用。 |
| 隐私至上应用 | 将数据保存在用户设备上,无需暴露到远程服务器。 |
| 自托管工具 | 分发单一二进制文件,管理员可在内部服务器上安装。 |
| 快速原型 | 避免 docker 构建时间,立即测试功能变更。 |
社区与扩展
EXE 生态正在快速成长。如果你使用的框架不在上述列表中,欢迎提 Issue 或提交适配器。核心使用 Rust 编写并利用 Bun 进行打包,具备良好伸缩性,并可加入新功能,例如:
- 自动更新二进制文件
- 原生插件支持
- 平台特定打包工具(WebAssembly、ARM64 等)
贡献指南
- Fork 本仓库。
- 本地修改。
- 提交 PR,描述问题与解决方案。
我们欢迎小而聚焦的 PR。项目采用 MIT 许可证,你甚至可以将二进制文件用于商业软件。
许可证
EXE 采用 MIT 许可证——随意使用并将其集成至产品中。
总结
EXE 将全栈框架的丰富生态与单一二进制的简洁性桥接起来。它消除了对 Docker 容器、Node 运行时或复杂部署脚本的需求,同时保留所有服务器端功能。无论你是在构建演示、自托管 SaaS,还是隐私重视工具,EXE 都为你提供了零摩擦的方式,将 Web 应用迁移至任何平台。
祝打包愉快!