Skip to main content

trigger-config

Configure your Trigger.dev project with a trigger.config.ts file

소스 정보

저장소
trycompai/comp
최근 소스 활동
2026년 4월 27일 13:37
감지된 SKILL.md 언어
영어
스타
2,088
포크
446

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
trigger-config
description
Configure your Trigger.dev project with a trigger.config.ts file
Source Cursor rule: `.cursor/rules/trigger.config.mdc`. Original file scope: `**/trigger.config.ts`. Original Cursor alwaysApply: `false`. # Trigger.dev Configuration (v4) **Complete guide to configuring `trigger.config.ts` with build extensions** ## Basic Configuration ```ts import { defineConfig } from "@trigger.dev/sdk"; export default defineConfig({ project: "<project-ref>", // Required: Your project reference dirs: ["./trigger"], // Task directories runtime: "node", // "node", "node-22", or "bun" logLevel: "info", // "debug", "info", "warn", "error" // Default retry settings retries: { enabledInDev: false, default: { maxAttempts: 3, minTimeoutInMs: 1000, maxTimeoutInMs: 10000, factor: 2, randomize: true, }, }, // Build configuration build: { autoDetectExternal: true, keepNames: true, minify: false, extensions: [], // Build extensions go here }, // Global lifecycle hooks onStart: async ({ payload, ctx }) => { console.log("Global task start"); }, onSuccess: async ({ payload, output, ctx }) => { console.log("Global task success"); }, onFailure: async ({ payload, error, ctx }) => { console.log("Global task failure"); }, }); ``` ## Build Extensions ### Database & ORM #### Prisma ```ts import { prismaExtension } from "@trigger.dev/build/extensions/prisma"; extensions: [ prismaExtension({ schema: "prisma/schema.prisma", version: "5.19.0", // Optional: specify version migrate: true, // Run migrations during build directUrlEnvVarName: "DIRECT_DATABASE_URL", typedSql: true, // Enable TypedSQL support }), ]; ``` #### TypeScript Decorators (for TypeORM) ```ts import { emitDecoratorMetadata } from "@trigger.dev/build/extensions/typescript"; extensions: [ emitDecoratorMetadata(), // Enables decorator metadata ]; ``` ### Scripting Languages #### Python ```ts import { pythonExtension } from "@trigger.dev/build/extensions/python"; extensions: [ pythonExtension({ scripts: ["./python/**/*.py"], // Copy Python files requirementsFile: "./requirements.txt", // Install packages devPythonBinaryPath: ".venv/bin/python", // Dev mode binary }), ]; // Usage in tasks const result = await python.runInline(`print("Hello, world!")`); const output = await python.runScript("./python/script.py", ["arg1"]); ``` ### Browser Automation #### Playwright ```ts import { playwright } from "@trigger.dev/build/extensions/playwright"; extensions: [ playwright({ browsers: ["chromium", "firefox", "webkit"], // Default: ["chromium"] headless: true, // Default: true }), ]; ``` #### Puppeteer ```ts import { puppeteer } from "@trigger.dev/build/extensions/puppeteer"; extensions: [puppeteer()]; // Environment variable needed: // PUPPETEER_EXECUTABLE_PATH: "/usr/bin/google-chrome-stable" ``` #### Lightpanda ```ts import { lightpanda } from "@trigger.dev/build/extensions/lightpanda"; extensions: [ lightpanda({ version: "latest", // or "nightly" disableTelemetry: false, }), ]; ``` ### Media Processing #### FFmpeg ```ts import { ffmpeg } from "@trigger.dev/build/extensions/core"; extensions: [ ffmpeg({ version: "7" }), // Static build, or omit for Debian version ]; // Automatically sets FFMPEG_PATH and FFPROBE_PATH // Add fluent-ffmpeg to external packages if using ``` #### Audio Waveform ```ts import { audioWaveform } from "@trigger.dev/build/extensions/audioWaveform"; extensions: [ audioWaveform(), // Installs Audio Waveform 1.1.0 ]; ``` ### System & Package Management #### System Packages (apt-get) ```ts import { aptGet } from "@trigger.dev/build/extensions/core"; extensions: [ aptGet({ packages: ["ffmpeg", "imagemagick", "curl=7.68.0-1"], // Can specify versions }), ]; ``` #### Additional NPM Packages Only use this for installing CLI tools, NOT packages you import in your code. ```ts import { additionalPackages } from "@trigger.dev/build/extensions/core"; extensions: [ additionalPackages({ packages: ["wrangler"], // CLI tools and specific versions }), ]; ``` #### Additional Files ```ts import { additionalFiles } from "@trigger.dev/build/extensions/core"; extensions: [ additionalFiles({ files: ["wrangler.toml", "./assets/**", "./fonts/**"], // Glob patterns supported }), ]; ``` ### Environment & Build Tools #### Environment Variable Sync ```ts import { syncEnvVars } from "@trigger.dev/build/extensions/core"; extensions: [ syncEnvVars(async (ctx) => { // ctx contains: environment, projectRef, env return [ { name: "SECRET_KEY", value: await getSecret(ctx.environment) }, { name: "API_URL", value: ctx.environment === "prod" ? "api.prod.com" : "api.dev.com" }, ]; }), ]; ``` #### ESBuild Plugins ```ts import { esbuildPlugin } from "@trigger.dev/build/extensions"; import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin"; extensions: [ esbuildPlugin( sentryEsbuildPlugin({ org: process.env.SENTRY_ORG, project: process.env.SENTRY_PROJECT, authToken: process.env.SENTRY_AUTH_TOKEN, }), { placement: "last", target: "deploy" } // Optional config ), ]; ``` ## Custom Build Extensions ```ts import { defineConfig } from "@trigger.dev/sdk"; const customExtension = { name: "my-custom-extension", externalsForTarget: (target) => { return ["some-native-module"]; // Add external dependencies }, onBuildStart: async (context) => { console.log(`Build starting for ${context.target}`); // Register esbuild plugins, modify build context }, onBuildComplete: async (context, manifest) => { console.log("Build complete, adding layers"); // Add build layers, modify deployment context.addLayer({ id: "my-layer", files: [{ source: "./custom-file", destination: "/app/custom" }], commands: ["chmod +x /app/custom"], }); }, }; export default defineConfig({ project: "my-project", build: { extensions: [customExtension], }, }); ``` ## Advanced Configuration ### Telemetry ```ts import { PrismaInstrumentation } from "@prisma/instrumentation"; import { OpenAIInstrumentation } from "@langfuse/openai"; export default defineConfig({ // ... other config telemetry: { instrumentations: [new PrismaInstrumentation(), new OpenAIInstrumentation()], exporters: [customExporter], // Optional custom exporters }, }); ``` ### Machine & Performance ```ts export default defineConfig({ // ... other config defaultMachine: "large-1x", // Default machine for all tasks maxDuration: 300, // Default max duration (seconds) enableConsoleLogging: true, // Console logging in development }); ``` ## Common Extension Combinations ### Full-Stack Web App ```ts extensions: [ prismaExtension({ schema: "prisma/schema.prisma", migrate: true }), additionalFiles({ files: ["./public/**", "./assets/**"] }), syncEnvVars(async (ctx) => [...envVars]), ]; ``` ### AI/ML Processing ```ts extensions: [ pythonExtension({ scripts: ["./ai/**/*.py"], requirementsFile: "./requirements.txt", }), ffmpeg({ version: "7" }), additionalPackages({ packages: ["wrangler"] }), ]; ``` ### Web Scraping ```ts extensions: [ playwright({ browsers: ["chromium"] }), puppeteer(), additionalFiles({ files: ["./selectors.json", "./proxies.txt"] }), ]; ``` ## Best Practices - **Use specific versions**: Pin extension versions for reproducible builds - **External packages**: Add modules with native addons to the `build.external` array - **Environment sync**: Use `syncEnvVars` for dynamic secrets - **File paths**: Use glob patterns for flexible file inclusion - **Debug builds**: Use `--log-level debug --dry-run` for troubleshooting Extensions only affect deployment, not local development. Use `external` array for packages that shouldn't be bundled.
GitHub에서 보기