trigger-config
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTrigger.dev Configuration
Trigger.dev 配置
Configure your Trigger.dev project with and build extensions.
trigger.config.ts使用和构建扩展配置你的Trigger.dev项目。
trigger.config.tsWhen to Use
适用场景
- Setting up a new Trigger.dev project
- Adding database support (Prisma, TypeORM)
- Configuring browser automation (Playwright, Puppeteer)
- Adding media processing (FFmpeg)
- Running Python scripts from tasks
- Syncing environment variables
- Installing system packages
- 新建Trigger.dev项目时
- 添加数据库支持(Prisma、TypeORM)
- 配置浏览器自动化(Playwright、Puppeteer)
- 添加媒体处理功能(FFmpeg)
- 从任务中运行Python脚本
- 同步环境变量
- 安装系统包
Basic Configuration
基础配置
ts
// trigger.config.ts
import { defineConfig } from "@trigger.dev/sdk";
export default defineConfig({
project: "<project-ref>",
dirs: ["./trigger"],
runtime: "node", // "node", "node-22", or "bun"
logLevel: "info",
retries: {
enabledInDev: false,
default: {
maxAttempts: 3,
minTimeoutInMs: 1000,
maxTimeoutInMs: 10000,
factor: 2,
},
},
build: {
extensions: [], // Add extensions here
},
});ts
// trigger.config.ts
import { defineConfig } from "@trigger.dev/sdk";
export default defineConfig({
project: "<project-ref>",
dirs: ["./trigger"],
runtime: "node", // "node", "node-22", or "bun"
logLevel: "info",
retries: {
enabledInDev: false,
default: {
maxAttempts: 3,
minTimeoutInMs: 1000,
maxTimeoutInMs: 10000,
factor: 2,
},
},
build: {
extensions: [], // 在此处添加扩展
},
});Common Build Extensions
常用构建扩展
Prisma
Prisma
ts
import { prismaExtension } from "@trigger.dev/build/extensions/prisma";
export default defineConfig({
// ...
build: {
extensions: [
prismaExtension({
schema: "prisma/schema.prisma",
migrate: true,
directUrlEnvVarName: "DIRECT_DATABASE_URL",
}),
],
},
});ts
import { prismaExtension } from "@trigger.dev/build/extensions/prisma";
export default defineConfig({
// ...
build: {
extensions: [
prismaExtension({
schema: "prisma/schema.prisma",
migrate: true,
directUrlEnvVarName: "DIRECT_DATABASE_URL",
}),
],
},
});Playwright (Browser Automation)
Playwright(浏览器自动化)
ts
import { playwright } from "@trigger.dev/build/extensions/playwright";
extensions: [
playwright({
browsers: ["chromium"], // or ["chromium", "firefox", "webkit"]
}),
]ts
import { playwright } from "@trigger.dev/build/extensions/playwright";
extensions: [
playwright({
browsers: ["chromium"], // 或 ["chromium", "firefox", "webkit"]
}),
]Puppeteer
Puppeteer
ts
import { puppeteer } from "@trigger.dev/build/extensions/puppeteer";
extensions: [puppeteer()]
// Set env var: PUPPETEER_EXECUTABLE_PATH="/usr/bin/google-chrome-stable"ts
import { puppeteer } from "@trigger.dev/build/extensions/puppeteer";
extensions: [puppeteer()]
// 设置环境变量:PUPPETEER_EXECUTABLE_PATH="/usr/bin/google-chrome-stable"FFmpeg (Media Processing)
FFmpeg(媒体处理)
ts
import { ffmpeg } from "@trigger.dev/build/extensions/core";
extensions: [
ffmpeg({ version: "7" }),
]
// Automatically sets FFMPEG_PATH and FFPROBE_PATHts
import { ffmpeg } from "@trigger.dev/build/extensions/core";
extensions: [
ffmpeg({ version: "7" }),
]
// 自动设置FFMPEG_PATH和FFPROBE_PATHPython
Python
ts
import { pythonExtension } from "@trigger.dev/build/extensions/python";
extensions: [
pythonExtension({
scripts: ["./python/**/*.py"],
requirementsFile: "./requirements.txt",
devPythonBinaryPath: ".venv/bin/python",
}),
]
// Usage in tasks:
const result = await python.runScript("./python/process.py", ["arg1"]);ts
import { pythonExtension } from "@trigger.dev/build/extensions/python";
extensions: [
pythonExtension({
scripts: ["./python/**/*.py"],
requirementsFile: "./requirements.txt",
devPythonBinaryPath: ".venv/bin/python",
}),
]
// 在任务中使用:
const result = await python.runScript("./python/process.py", ["arg1"]);System Packages (apt-get)
系统包(apt-get)
ts
import { aptGet } from "@trigger.dev/build/extensions/core";
extensions: [
aptGet({
packages: ["imagemagick", "curl"],
}),
]ts
import { aptGet } from "@trigger.dev/build/extensions/core";
extensions: [
aptGet({
packages: ["imagemagick", "curl"],
}),
]Additional Files
附加文件
ts
import { additionalFiles } from "@trigger.dev/build/extensions/core";
extensions: [
additionalFiles({
files: ["./assets/**", "./templates/**"],
}),
]ts
import { additionalFiles } from "@trigger.dev/build/extensions/core";
extensions: [
additionalFiles({
files: ["./assets/**", "./templates/**"],
}),
]Environment Variable Sync
环境变量同步
ts
import { syncEnvVars } from "@trigger.dev/build/extensions/core";
extensions: [
syncEnvVars(async (ctx) => {
return [
{ name: "API_KEY", value: await getSecret(ctx.environment) },
{ name: "ENV", value: ctx.environment },
];
}),
]ts
import { syncEnvVars } from "@trigger.dev/build/extensions/core";
extensions: [
syncEnvVars(async (ctx) => {
return [
{ name: "API_KEY", value: await getSecret(ctx.environment) },
{ name: "ENV", value: ctx.environment },
];
}),
]Common Extension Combinations
常用扩展组合
Full-Stack Web App
全栈Web应用
ts
extensions: [
prismaExtension({ schema: "prisma/schema.prisma", migrate: true }),
additionalFiles({ files: ["./assets/**"] }),
syncEnvVars(async (ctx) => [...envVars]),
]ts
extensions: [
prismaExtension({ schema: "prisma/schema.prisma", migrate: true }),
additionalFiles({ files: ["./assets/**"] }),
syncEnvVars(async (ctx) => [...envVars]),
]AI/ML Processing
AI/ML处理
ts
extensions: [
pythonExtension({
scripts: ["./ai/**/*.py"],
requirementsFile: "./requirements.txt",
}),
ffmpeg({ version: "7" }),
]ts
extensions: [
pythonExtension({
scripts: ["./ai/**/*.py"],
requirementsFile: "./requirements.txt",
}),
ffmpeg({ version: "7" }),
]Web Scraping
网页爬取
ts
extensions: [
playwright({ browsers: ["chromium"] }),
additionalFiles({ files: ["./selectors.json"] }),
]ts
extensions: [
playwright({ browsers: ["chromium"] }),
additionalFiles({ files: ["./selectors.json"] }),
]Global Lifecycle Hooks
全局生命周期钩子
ts
export default defineConfig({
// ...
onStartAttempt: async ({ payload, ctx }) => {
console.log("Task starting:", ctx.task.id);
},
onSuccess: async ({ payload, output, ctx }) => {
console.log("Task succeeded");
},
onFailure: async ({ payload, error, ctx }) => {
console.error("Task failed:", error);
},
});ts
export default defineConfig({
// ...
onStartAttempt: async ({ payload, ctx }) => {
console.log("任务开始:", ctx.task.id);
},
onSuccess: async ({ payload, output, ctx }) => {
console.log("任务成功");
},
onFailure: async ({ payload, error, ctx }) => {
console.error("任务失败:", error);
},
});Machine Defaults
机器默认配置
ts
export default defineConfig({
// ...
defaultMachine: "medium-1x",
maxDuration: 300, // seconds
});ts
export default defineConfig({
// ...
defaultMachine: "medium-1x",
maxDuration: 300, // 秒
});Telemetry Integration
遥测集成
ts
import { PrismaInstrumentation } from "@prisma/instrumentation";
export default defineConfig({
// ...
telemetry: {
instrumentations: [new PrismaInstrumentation()],
},
});ts
import { PrismaInstrumentation } from "@prisma/instrumentation";
export default defineConfig({
// ...
telemetry: {
instrumentations: [new PrismaInstrumentation()],
},
});Best Practices
最佳实践
- Pin versions for reproducible builds
- Use for dynamic secrets
syncEnvVars - Add native modules to array
build.external - Debug with
--log-level debug --dry-run
Extensions only affect deployment, not local development.
See for complete documentation.
references/config.md- 固定版本以实现可复现的构建
- **使用**管理动态密钥
syncEnvVars - 将原生模块添加到数组
build.external - 使用进行调试
--log-level debug --dry-run
扩展仅影响部署,不影响本地开发。
完整文档请查看。
references/config.md