| title | Bun guide |
|---|---|
| sidebarTitle | Bun |
| description | This guide will show you how to setup Trigger.dev in your existing Bun project, test an example task, and view the run. |
| icon | js |
import Prerequisites from "/snippets/framework-prerequisites.mdx"; import CliRunTestStep from "/snippets/step-run-test.mdx"; import CliViewRunStep from "/snippets/step-view-run.mdx";
The trigger.dev CLI does not yet support Bun. So you will need to run the CLI using Node.js. Bun will still be used to execute your tasks, even in the `dev` environment. **Supported Bun version:** Deployed tasks run on Bun 1.3.3. For local development, use Bun 1.3.x for compatibility.- Certain OpenTelemetry instrumentation will not work with Bun, because Bun does not support Node's
registerhook. This means that some libraries that rely on this hook will not work with Bun. - If Bun is installed via Homebrew (e.g.
/opt/homebrew/bin/bun), you may see anENOENT: spawn /Users/<you>/.bun/bin/bunerror because the CLI expects Bun at the default install path. Workaround: create a symlink:ln -s $(which bun) ~/.bun/bin/bun
The easiest way to get started is to use the CLI. It will add Trigger.dev to your existing project, create a /trigger folder and give you an example task.
Run this command in the root of your project to get started:
npx trigger.dev@latest init --runtime bunpnpm dlx trigger.dev@latest init --runtime bunyarn dlx trigger.dev@latest init --runtime bunIt will do a few things:
- Log you into the CLI if you're not already logged in.
- Create a
trigger.config.tsfile in the root of your project. - Ask where you'd like to create the
/triggerdirectory. - Create the
/src/triggerdirectory with an example task,/src/trigger/example.[ts/js].
Install the "Hello World" example task when prompted. We'll use this task to test the setup.
Open the `/src/trigger/example.ts` file and replace the contents with the following:
```ts example.ts
import { Database } from "bun:sqlite";
import { task } from "@trigger.dev/sdk";
export const bunTask = task({
id: "bun-task",
run: async (payload: { query: string }) => {
const db = new Database(":memory:");
const query = db.query("select 'Hello world' as message;");
console.log(query.get()); // => { message: "Hello world" }
return {
message: "Query executed",
};
},
});
```
The CLI dev command runs a server for your tasks. It watches for changes in your /trigger directory and communicates with the Trigger.dev platform to register your tasks, perform runs, and send data back and forth.
It can also update your @trigger.dev/* packages to prevent version mismatches and failed deploys. You will always be prompted first.
npx trigger.dev@latest devpnpm dlx trigger.dev@latest devyarn dlx trigger.dev@latest dev