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
| Option | Type | Default | Description |
|---|---|---|---|
modulesDir | string | 'src/modules' | Directory containing modules |
functionsFile | string | 'functions.yml' | Name of the functions definition file |
strategy | 'explicit' | 'recursive' | 'explicit' | Module discovery strategy |
Logging Options
| Option | Type | Default | Description |
|---|---|---|---|
enabledCategories | string[] | [] | Log categories to enable |
showRoutesTable | boolean | true | Show routes table on startup |
routesTableFormat | 'byMethod' | 'byModule' | 'byMethod' | Routes table format |
Server Options
| Option | Type | Default | Description |
|---|---|---|---|
port | number | 4005 | HTTP server port |
cors | boolean | CorsOptions | false | CORS configuration |
bodyParser.limit | string | '1mb' | Maximum request body size |
sqs.enabled | boolean | true | Enable SQS emulator |
sqs.apiRoutes | boolean | true | Enable 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
- Module Discovery - How modules are discovered
- HTTP Handlers - Creating HTTP handlers