mcpField
T
trigger-config

trigger-config

github.com/triggerdotdev云与 DevOps352.3k 次安装1 周前更新
代码仓库

关于 trigger-config

Trigger.dev 项目的配置指南,面向需要调整任务运行时与构建流程的开发者。说明如何设置 `trigger.config.ts`,并通过扩展配置数据库、浏览器自动化、媒体处理、Python 和环境变量。

主要功能

  1. 01配置运行时与任务目录
  2. 02添加 Prisma 数据库扩展
  3. 03配置 Playwright 或 Puppeteer
  4. 04集成 FFmpeg 与 Python 脚本
  5. 05同步环境变量和附加文件

适用场景

  1. 01为任务构建配置数据库支持
  2. 02设置浏览器自动化环境
  3. 03配置媒体处理或 Python 脚本
  4. 04将文件和环境变量纳入构建

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/triggerdotdev/skills --skill trigger-config

安装后在 Claude Code 中输入/trigger-config确认已加载。

附带文件references/config.md

详细介绍

Trigger.dev 配置

使用 trigger.config.ts 配置 Trigger.dev 项目和构建扩展。

适用场景

  • 设置新的 Trigger.dev 项目
  • 添加数据库支持(Prisma、TypeORM)
  • 配置浏览器自动化(Playwright、Puppeteer)
  • 添加媒体处理(FFmpeg)
  • 从任务中运行 Python 脚本
  • 同步环境变量
  • 安装系统软件包

基本配置

// 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
  },
});

常用构建扩展

Prisma
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(浏览器自动化)
import { playwright } from "@trigger.dev/build/extensions/playwright";

extensions: [
  playwright({
    browsers: ["chromium"], // or ["chromium", "firefox", "webkit"]
  }),
]
Puppeteer
import { puppeteer } from "@trigger.dev/build/extensions/puppeteer";

extensions: [puppeteer()]

// Set env var: PUPPETEER_EXECUTABLE_PATH="/usr/bin/google-chrome-stable"
FFmpeg(媒体处理)
import { ffmpeg } from "@trigger.dev/build/extensions/core";

extensions: [
  ffmpeg({ version: "7" }),
]
// Automatically sets FFMPEG_PATH and FFPROBE_PATH
Python
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"]);
系统软件包(apt-get)
import { aptGet } from "@trigger.dev/build/extensions/core";

extensions: [
  aptGet({
    packages: ["imagemagick", "curl"],
  }),
]
其他文件
import { additionalFiles } from "@trigger.dev/build/extensions/core";

extensions: [
  additionalFiles({
    files: ["./assets/**", "./templates/**"],
  }),
]
环境变量同步
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 },
    ];
  }),
]

常见扩展组合

全栈 Web 应用
extensions: [
  prismaExtension({ schema: "prisma/schema.prisma", migrate: true }),
  additionalFiles({ files: ["./assets/**"] }),
  syncEnvVars(async (ctx) => [...envVars]),
]
AI/ML 处理
extensions: [
  pythonExtension({
    scripts: ["./ai/**/*.py"],
    requirementsFile: "./requirements.txt",
  }),
  ffmpeg({ version: "7" }),
]
网页抓取
extensions: [
  playwright({ browsers: ["chromium"] }),
  additionalFiles({ files: ["./selectors.json"] }),
]

全局生命周期钩子

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);
  },
});

机器默认值

export default defineConfig({
  // ...
  defaultMachine: "medium-1x",
  maxDuration: 300, // seconds
});

遥测集成

import { PrismaInstrumentation } from "@prisma/instrumentation";

export default defineConfig({
  // ...
  telemetry: {
    instrumentations: [new PrismaInstrumentation()],
  },
});

最佳实践

  1. 固定版本,以确保构建可复现
  2. 使用 syncEnvVars 管理动态密钥
  3. 将原生模块添加到 build.external 数组
  4. 使用 --log-level debug --dry-run 进行调试

扩展仅影响部署,不影响本地开发。

完整文档请参阅 references/config.md。

评论

支持 Markdown