trigger-config

Par triggerdotdev · skills

Configurez les projets Trigger.dev avec `trigger.config.ts`. À utiliser pour mettre en place des extensions de build pour Prisma, Playwright, FFmpeg, Python, ou pour personnaliser les paramètres de déploiement.

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

Configuration Trigger.dev

Configurez votre projet Trigger.dev avec trigger.config.ts et créez des extensions.

Quand l'utiliser

  • Configurer un nouveau projet Trigger.dev
  • Ajouter le support de base de données (Prisma, TypeORM)
  • Configurer l'automatisation de navigateur (Playwright, Puppeteer)
  • Ajouter le traitement multimédia (FFmpeg)
  • Exécuter des scripts Python depuis les tâches
  • Synchroniser les variables d'environnement
  • Installer des paquets système

Configuration de base

// trigger.config.ts
import { defineConfig } from "@trigger.dev/sdk";

export default defineConfig({
  project: "<project-ref>",
  dirs: ["./trigger"],
  runtime: "node", // "node", "node-22", ou "bun"
  logLevel: "info",

  retries: {
    enabledInDev: false,
    default: {
      maxAttempts: 3,
      minTimeoutInMs: 1000,
      maxTimeoutInMs: 10000,
      factor: 2,
    },
  },

  build: {
    extensions: [], // Ajouter les extensions ici
  },
});

Extensions de build courantes

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 (Automatisation de navigateur)

import { playwright } from "@trigger.dev/build/extensions/playwright";

extensions: [
  playwright({
    browsers: ["chromium"], // ou ["chromium", "firefox", "webkit"]
  }),
]

Puppeteer

import { puppeteer } from "@trigger.dev/build/extensions/puppeteer";

extensions: [puppeteer()]

// Définir la variable d'env : PUPPETEER_EXECUTABLE_PATH="/usr/bin/google-chrome-stable"

FFmpeg (Traitement multimédia)

import { ffmpeg } from "@trigger.dev/build/extensions/core";

extensions: [
  ffmpeg({ version: "7" }),
]
// Définit automatiquement FFMPEG_PATH et FFPROBE_PATH

Python

import { pythonExtension } from "@trigger.dev/build/extensions/python";

extensions: [
  pythonExtension({
    scripts: ["./python/**/*.py"],
    requirementsFile: "./requirements.txt",
    devPythonBinaryPath: ".venv/bin/python",
  }),
]

// Utilisation dans les tâches :
const result = await python.runScript("./python/process.py", ["arg1"]);

Paquets système (apt-get)

import { aptGet } from "@trigger.dev/build/extensions/core";

extensions: [
  aptGet({
    packages: ["imagemagick", "curl"],
  }),
]

Fichiers supplémentaires

import { additionalFiles } from "@trigger.dev/build/extensions/core";

extensions: [
  additionalFiles({
    files: ["./assets/**", "./templates/**"],
  }),
]

Synchronisation des variables d'environnement

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

Combinaisons d'extensions courantes

Application web full-stack

extensions: [
  prismaExtension({ schema: "prisma/schema.prisma", migrate: true }),
  additionalFiles({ files: ["./assets/**"] }),
  syncEnvVars(async (ctx) => [...envVars]),
]

Traitement IA/ML

extensions: [
  pythonExtension({
    scripts: ["./ai/**/*.py"],
    requirementsFile: "./requirements.txt",
  }),
  ffmpeg({ version: "7" }),
]

Web scraping

extensions: [
  playwright({ browsers: ["chromium"] }),
  additionalFiles({ files: ["./selectors.json"] }),
]

Hooks de cycle de vie global

export default defineConfig({
  // ...
  onStartAttempt: async ({ payload, ctx }) => {
    console.log("Tâche en cours de démarrage :", ctx.task.id);
  },
  onSuccess: async ({ payload, output, ctx }) => {
    console.log("Tâche réussie");
  },
  onFailure: async ({ payload, error, ctx }) => {
    console.error("Tâche échouée :", error);
  },
});

Valeurs par défaut de la machine

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

Intégration de la télémétrie

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

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

Bonnes pratiques

  1. Épingler les versions pour des builds reproductibles
  2. Utiliser syncEnvVars pour les secrets dynamiques
  3. Ajouter les modules natifs au tableau build.external
  4. Déboguer avec --log-level debug --dry-run

Les extensions n'affectent que le déploiement, pas le développement local.

Voir references/config.md pour la documentation complète.

Skills similaires