Deploy Bun 1.4
Prepare Bun lockfiles, entry files, builds, and health checks for DeployGrove.
Put the manifest and lockfile at the repository root. Commit source and lockfiles, but keep credentials, local dependencies, virtual environments, and database files out of Git. DeployGrove scans the whole checkout: Dockerfiles, Containerfiles, Compose files, symlinks, Git submodules, package-manager config files, and unsupported dependency sources are rejected, even in unused folders.
Repository layout
my-app/
package.json
bun.lock
server.tsCommit exactly one Bun lockfile: bun.lock or bun.lockb. Remove Node lockfiles. If package.json sets packageManager, it must name a Bun 1.4 patch release. A Bun lockfile takes priority over package.json during runtime detection.
A small Bun app
Bun.serve({
hostname: '0.0.0.0',
port: 8080,
fetch() {
return new Response('Hello from DeployGrove');
}
});Save this as server.ts. Test with bun run server.ts. Bun, Elysia, and Hono apps must serve / without login and listen on 0.0.0.0:8080.
Build and start rules
DeployGrove runs bun install --frozen-lockfile --ignore-scripts, then the existing build script if present. Dependency lifecycle scripts stay blocked. Packages that require those scripts need a supported alternative.
The runtime runs bun run --no-install --no-env-file server.ts. Set the entry file if yours differs; if you build to dist/server.js, select that output file. Runtime dependency auto-install and .env loading are disabled. Add secrets through project Environment variables.
Ready to release? Follow the deploy steps and account setup.