Skip to main content

Configuration

Learn how to configure the Core package for your project.

Configuration File

Create a monolith.config.ts (or .js) in your project root:

import { MonolithConfig } from '@serverless-monolith/core';

export default {
// Module discovery settings
discovery: {
modulesDir: 'src/modules',
functionsFile: 'functions.yml',
strategy: 'explicit'
},

// Logging settings
logging: {
enabledCategories: ['adapterStartupInfo', 'httpRequestInfo'],
showRoutesTable: true,
routesTableFormat: 'byMethod' // 'byMethod' | 'byModule'
}
} satisfies MonolithConfig;

Server Options

When creating a server, you can pass additional options:

import { MonolithServer } from '@serverless-monolith/core';

const server = MonolithServer.create('./monolith.config.ts', {
port: 4005, // HTTP server port
cors: true, // Enable CORS
bodyParser: {
limit: '10mb', // Body parser limit
extended: true
},
sqs: {
enabled: true, // Enable SQS emulator
apiRoutes: true, // Enable SQS API routes
retryAttempts: 0,
visibilityTimeout: 30
},
terminal: customTerminal // Custom terminal (optional)
});

Configuration Options

Discovery Options

OptionTypeDefaultDescription
modulesDirstring'src/modules'Directory containing modules
functionsFilestring'functions.yml'Name of the functions definition file
strategy'explicit' | 'recursive''explicit'Module discovery strategy

Logging Options

OptionTypeDefaultDescription
enabledCategoriesstring[][]Log categories to enable
showRoutesTablebooleantrueShow routes table on startup
routesTableFormat'byMethod' | 'byModule''byMethod'Routes table format

Server Options

OptionTypeDefaultDescription
portnumber4005HTTP server port
corsboolean | CorsOptionsfalseCORS configuration
bodyParser.limitstring'1mb'Maximum request body size
sqs.enabledbooleantrueEnable SQS emulator
sqs.apiRoutesbooleantrueEnable SQS REST API

Environment Variables

You can override configuration using environment variables:

# .env
MONOLITH_PORT=4005
MONOLITH_CORS=true
MONOLITH_SQS_ENABLED=true
LOG_LEVEL=debug

Multiple Environments

Create environment-specific configuration files:

// monolith.config.ts
const isDev = process.env.NODE_ENV !== 'production';

export default {
discovery: {
modulesDir: 'src/modules',
},
logging: {
enabledCategories: isDev
? ['adapterStartupInfo', 'httpRequestInfo', 'sqsMessageInfo']
: ['adapterStartupInfo'],
showRoutesTable: isDev,
},
};

Validating Configuration

The configuration is validated at startup. Invalid configurations will throw descriptive errors:

try {
const server = MonolithServer.create('./invalid-config.ts');
} catch (error) {
console.error('Configuration error:', error.message);
}

Next Steps