Skip to content

Configuración PM2 para proyecto

Esta es la estructura básica ideal que podría servirte para tu archivo de config, según se pueda dar el caso (tipo de proyecto, podrían darse algunos cambios mínimos que debas hacer)

Habitualmente, el archivo se llamará ecosystem.config.js pero según detalles de tu package.json, este podría necesitar cambiar la extensión a .mjs o .cjs

js
// Si quieres utilizar valores que ya existen en tu package.json
import { version, name } from './package.json';

// Por si tengas +1 servicio en el proyecto, para parametrizar facilmente varios ajustes
const baseConfig = {
    // cualquier archivo/carpeta que se modifique hará que se reinicie
    watch: true,
    // salvo los listados aquí
    ignore_watch : [
        "./data/*"
        "./logs/*",
        "node_modules/"
    ],

    // en caso de crashear/detenerse, levantarse automáticamente
    autorestart: true,
    // en caso de crasheos reiterados en corto tiempo,
    // limite antes de detener el auto restart
    max_restarts: 10,
    // el formato del timestamp para logs
    log_date_format: "YYYY-MM-DD HH:mm",
    // ruta dentro para logs de error (console.warn)
    error_file: "./logs/errors.log",
    // ruta dentro para logs de info (console.info)  
    out_file: "./logs/out.log",
};

module.exports = {
    apps : [
        {
            // forma estática del nombre
            name: "[proyecto] api",         
            // forma estática de definir la versión
            version: "1.0",                    
            // ruta del archivo a levantar
            script: "./api.js",               
            // reiniciar este servicio a las 00:00 todos los días
            cron_restart: "0 0 * * *",         
            ...baseConfig
        },
        {
            // forma dinámica del nombre (concat de detalle del package.json)
            name: `[${name}] cronjobs`,     
            // forma dinámica de definir la versión
            version: version,                  
            script: "./crons.js",
            ...baseConfig
        },
        // agrega mas arrays según los scripts que necesites estén activos
    ]
};

Potenciado con café ☕ y VitePress 📘 | Hosteado con Cloudflare Pages ⚡