Skip to main content

trigger-config

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

Informations de source

Dépôt
trycompai/comp
Dernière activité de la source
27 avril 2026 à 13:37
Langue détectée de SKILL.md
anglais
Étoiles
2 057
Forks
440

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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.
Voir sur GitHub