Bun guide
This guide will show you how to setup Trigger.dev with Bun
We now have experimental support for Bun. This guide will show you have to setup Trigger.dev in your existing Bun project, test an example task, and view the run.
Prerequisites
- Setup a project in
- Ensure TypeScript is installed
- Create a Trigger.dev account
- Create a new Trigger.dev project
Initial setup
Run the CLI `init` command
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:
It will do a few things:
- Log you into the CLI if you’re not already logged in.
- Create a
trigger.config.ts
file in the root of your project. - Ask where you’d like to create the
/trigger
directory. - Create the
/src/trigger
directory 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.
Update example.ts to use Bun
Open the /src/trigger/example.ts
file and replace the contents with the following:
import { Database } from "bun:sqlite";
import { task } from "@trigger.dev/sdk/v3";
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",
};
},
});
Run the CLI `dev` command
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.
Perform a test run using the dashboard
The CLI dev
command spits out various useful URLs. Right now we want to visit the Test page
You should see our Example task in the list
, select it. Most tasks have a “payload” which you enter in the JSON editor , but our example task doesn’t need any input.Press the “Run test” button
.View your run
Congratulations, you should see the run page which will live reload showing you the current state of the run.
If you go back to your terminal you’ll see that the dev command also shows the task status and links to the run log.
Known issues
- Certain OpenTelemetry instrumentation will not work with Bun, because Bun does not support Node’s
register
hook. This means that some libraries that rely on this hook will not work with Bun.
Was this page helpful?