This file is used to configure your project and how it’s bundled.
Let’s take a look at a basic trigger.config.ts file. This is generated for you when you follow the quick start guide. This file is used to configure your project and how it’s bundled.
trigger.config.ts
Copy
import type { TriggerConfig } from "@trigger.dev/sdk/v3";export const config: TriggerConfig = { //Your project ref (you can see it on the Project settings page in the dashboard) project: "proj_gtcwttqhhtlasxgfuhxs", retries: { //If you want to retry a task in dev mode (when using the CLI) enabledInDev: false, //the default retry settings. Used if you don't specify on a task. default: { maxAttempts: 3, minTimeoutInMs: 1000, maxTimeoutInMs: 10000, factor: 2, randomize: true, }, }, //The paths for your trigger folders triggerDirectories: ["./trigger"],};
Most of the time you don’t need to change anything in this file, or if you do then we will tell you when you the run the CLI command.
You can run code before any task is run by adding a init function to your trigger.config.ts file.
trigger.config.ts
Copy
import type { TriggerConfig } from "@trigger.dev/sdk/v3";export const config: TriggerConfig = { //..other stuff init: async (payload, { ctx }) => { console.log("I run before any task is run"); },};
You’ll have access to the run payload and the context object. Currently you cannot return anything from this function.
We use OpenTelemetry (OTEL) for our run logs. This means you get a lot of information about your tasks with no effort. But you probably want to add more information to your logs. For example, here’s all the Prisma calls automatically logged:
Here we add Prisma and OpenAI instrumentations to your trigger.config.ts file.
trigger.config.ts
Copy
import type { TriggerConfig } from "@trigger.dev/sdk/v3";import { PrismaInstrumentation } from "@prisma/instrumentation";import { OpenAIInstrumentation } from "@traceloop/instrumentation-openai";export const config: TriggerConfig = { //..other stuff instrumentations: [new PrismaInstrumentation(), new OpenAIInstrumentation()],};
We’ll let you know when running the CLI dev command if this is a problem. Some packages are ESM-only so they don’t work directly from CJS when using Node.js. In that case you need to add them to the dependenciesToBundle array in your trigger.config.ts file.
trigger.config.ts
Copy
import type { TriggerConfig } from "@trigger.dev/sdk/v3";export const config: TriggerConfig = { //..other stuff //either regex or strings of package names dependenciesToBundle: [/@sindresorhus/, "escape-string-regexp"],};
✘ [ERROR] Error: @prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.In case this error is unexpected for you, please report it inhttps://pris.ly/prisma-prisma-bug-reportat new PrismaClient (/app/node_modules/.prisma/client/default.js:43:11)at Object.<anonymous> (/lib/prisma.ts:7:33)at Module.\_compile (node:internal/modules/cjs/loader:1356:14)at Object.Module.\_extensions..js (node:internal/modules/cjs/loader:1414:10)at Module.load (node:internal/modules/cjs/loader:1197:32)at Function.Module.\_load (node:internal/modules/cjs/loader:1013:12)at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)at node:internal/main/run_main_module:28:49
Prisma works by generating a client from your prisma.schema file. This means you need to do a couple of things to get it to work with Trigger:
Anything you put in postinstall will be run as part of the install step. This is how Next.js recommends you set up Prisma anyway.
2
Add prisma and the schema to trigger.config.ts
trigger.config.ts
Copy
import type { TriggerConfig } from "@trigger.dev/sdk/v3";export const config: TriggerConfig = { //..other stuff // using the default path additionalFiles: ["./prisma/schema.prisma"], // or a custom path, for example in a monorepo additionalFiles: ["../../custom/path/to/schema.prisma"], additionalPackages: ["prisma@5.11.0"],};
This tells Trigger to bundle the Prisma client and the schema file.