View on GitHub

aws-lambda-nodejs-esbuild

位馃挩 AWS CDK Construct to bundle JavaScript and TypeScript AWS lambdas using extremely fast esbuild.

位馃挩 aws-lambda-nodejs-esbuild

AWS CDK Construct to build Node.js AWS lambdas using esbuild.

CDK Construct NodeJS Build Status Coverage Status npm version semantic-release Mentioned in Awesome CDK

Table of Contents

Features

Note: The default JavaScript syntax target is set to ES2017, so the final bundle will be supported by all AWS Lambda Node.js runtimes. If you still using an old lambda runtime and have to respect it you can play with esbuild target option, see JavaScript syntax support for more details about syntax transform limitations.

Installation

yarn add --dev @aws-cdk/aws-lambda aws-lambda-nodejs-esbuild
# or
npm install -D @aws-cdk/aws-lambda aws-lambda-nodejs-esbuild

Configure

By default, no configuration required, but you can change esbuild behavior:

  import * as cdk from '@aws-cdk/core';
  import { NodejsFunction } from 'aws-lambda-nodejs-esbuild';

  class NewStack extends cdk.Stack {
    constructor(scope, id, props) {
      super(scope, id, props);

      new NodejsFunction(this, 'NewFunction', {
        esbuildOptions: {
          minify: false, // default
          target: 'ES2017',
        }
      });
    }
  }

Check esbuild documentation for the full list of available options. Note that some options like entryPoints or outdir cannot be overwritten. The package specified in the exclude option is passed to esbuild as external, but it is not included in the function bundle either. The default value for this option is ['aws-sdk'].

Usage

The normal AWS CDK deploy procedure will automatically compile with esbuild:

See examples: minimal and complete

Author

Victor Korzunin