@nexckycort/lambda-devkit v0.0.18
Lambda DevKit
A development toolkit for compiling and running AWS Lambda functions locally with API Gateway simulation.
Features
- Local Execution: Run your AWS Lambda functions locally without deploying to AWS.
- API Gateway Simulation: Simulate API Gateway routes and methods (e.g., GET, POST, PUT, DELETE).
- Compilation Support: Automatically compile TypeScript or JavaScript Lambda functions.
- Flexible Configuration: Define routes, handlers, and environment variables in a simple configuration file.
- Developer-Friendly CLI: Use the
ldkcommand to manage and test your Lambda functions.
Installation
Install the package as a project dependency:
pnpm add @nexckycort/lambda-devkit -DQuick Start
Create a Configuration File
Create a file namedlambda-devkit.config.tsin the root of your project. Here's an example configuration:import type { LambdaDevkitConfig } from '@nexckycort/lambda-devkit'; const config: LambdaDevkitConfig = { server: { routes: [ { method: 'GET', path: 'users', lambda: { handler: 'functions/getUsers', timeout: 5000, }, }, { method: 'POST', path: 'users', lambda: { handler: 'functions/createUser', timeout: 10000, }, }, ], port: 4000, environment: { ENV: 'dev', }, }, build: { bundle: true, minify: true, external: ['@aws-sdk/*'], }, }; export default config;Start the Local Server
Run the following command to start the local server:ldk devTest Your Endpoints
Use tools like Postman orcurlto test your endpoints:curl http://localhost:4000/users
Usage
Commands
The ldk CLI provides the following commands:
| Command | Description |
|---|---|
ldk dev | Start the local server with API Gateway simulation. |
ldk build | Compile your Lambda functions. |
Example
Here’s an example of how to use the CLI:
# Build your Lambda functions
ldk build
# Start the local server
ldk devConfiguration
Lambda DevKit uses a configuration file (lambda-devkit.config.ts) to define routes, handlers, and other settings. Below is a detailed explanation of each field:
server
Server configuration for local development.
| Field | Type | Description |
|---|---|---|
routes | RouteConfig[] | List of routes and their configurations. |
port | number | Port on which the local server will run. Default: 4000. |
environment | object | Environment variables to be passed to the Lambda function. |
routes
An array of route configurations. Each route maps an HTTP method and path to a Lambda function.
| Field | Type | Description |
|---|---|---|
method | string | HTTP method (e.g., GET, POST, PUT, DELETE). |
path | string | Path for the route. Supports wildcards like users/*. |
lambda | LambdaConfig | Configuration for the Lambda function that handles requests to this route. |
lambda
Configuration for a Lambda function.
| Field | Type | Description |
|---|---|---|
handler | string | Path to the folder containing the Lambda handler (e.g., functions/myFunction). |
timeout | number | Maximum execution time for the Lambda function in milliseconds. |
build
Build configuration for the Lambda functions.
| Field | Type | Description |
|---|---|---|
entryPoint | string | Entry point for the build process. Default: "functions/**". |
bundle | boolean | Whether to bundle the Lambda function code into a single file. |
minify | boolean | Whether to minify the Lambda function code during the build process. |
sourcemap | boolean \| string | Sourcemap generation options (true, 'linked', 'inline', etc.). |
outbase | string | Base directory for resolving entry points. Default: "functions". |
external | string[] | External libraries that should be excluded from the build. Default: ["@aws-sdk/*"]. |
Examples
Basic Example
Here’s a simple example of a Lambda function and its configuration:
src/getUsers/index.ts
export const handler = async (event: any) => {
console.log("Event:", event);
return {
statusCode: 200,
body: JSON.stringify([
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
]),
};
};lambda-devkit.config.ts
import type { LambdaDevkitConfig } from '@nexckycort/lambda-devkit';
const config: LambdaDevkitConfig = {
server: {
routes: [
{
method: 'GET',
path: 'users',
lambda: {
handler: 'functions/getUsers'
},
},
],
port: 4000,
},
build: {
bundle: true,
minify: true,
external: ['@aws-sdk/*'],
},
};
export default config;Run the server:
ldk devTest the endpoint:
curl http://localhost:4000/usersLicense
This project is licensed under the MIT License. See the LICENSE file for details.
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago