Setting the file. One moment.
Subchapter 5.2
references/project-structure.mdMarkdown2 KBView on GitHub
your-project/
├── trigger.config.ts # Required - project configuration
├── trigger/ # Default task directory
│ ├── example.ts # Created by `npx trigger init`
│ └── ...
├── package.json
└── src/ # Your app codeFor monorepos, place trigger.config.ts in the package that contains your tasks:
monorepo/
├── packages/
│ ├── api/
│ │ ├── trigger.config.ts # Config here
│ │ ├── trigger/ # Tasks here
│ │ └── src/
│ └── web/
└── package.jsonConfigure multiple directories in trigger.config.ts:
import { defineConfig } from "@trigger.dev/sdk";
export default defineConfig({
project: "proj_xxxxx",
dirs: [
"./trigger", // Default
"./src/jobs", // Additional
"./src/scheduled", // Another
],
});Keep tasks next to related code:
src/
├── users/
│ ├── routes.ts
│ └── tasks/
│ └── send-welcome-email.ts
├── orders/
│ ├── routes.ts
│ └── tasks/
│ └── process-order.ts// trigger.config.ts
export default defineConfig({
project: "proj_xxxxx",
dirs: ["./src/**/tasks"], // Glob pattern
});Each task file must:
task() or schemaTask() from @trigger.dev/sdk// ✅ Correct - exported task
export const myTask = task({
id: "my-task", // Unique ID
run: async (payload) => { ... },
});
// ❌ Wrong - not exported
const privateTask = task({ ... });
// ❌ Wrong - duplicate ID will error
export const anotherTask = task({
id: "my-task", // Conflicts!
run: async (payload) => { ... },
});