serverless-esbuild

raw JSON →
1.57.1 verified Mon Apr 27 auth: no javascript

Serverless Framework plugin for zero-config JavaScript and TypeScript bundling using esbuild. Current stable version is 1.57.1 (April 2026), released continuously with semantic release. It automatically bundles and minifies Lambda functions with esbuild, supports TypeScript and JavaScript, integrates with sls package/deploy/deploy function, serverless-offline, and invoke local. Key differentiator: zero-config, extremely fast (esbuild), and supports multiple providers (AWS, Google Cloud, etc.) with runtime support for Node.js 18+. Requires peer dependencies esbuild (0.8 - 0.28) and esbuild-node-externals (^1.0.0). Ships TypeScript types.

error Error: Cannot find module 'esbuild'
cause esbuild not installed or not in node_modules
fix
npm install -D esbuild
error Error: serverless-esbuild expects Node >= 18
cause Running on older Node.js version
fix
Upgrade Node.js to v18 or later
error TypeError: Cannot read properties of undefined (reading 'includes')
cause esbuild version incompatible with serverless-esbuild
fix
Update esbuild to a supported version (0.8 - 0.28)
breaking Node.js 18+ required
fix Upgrade Node.js to version 18 or higher.
breaking esbuild peer dependency range updated
fix Ensure esbuild version is 0.8-0.28. For earlier versions, esbuild 0.8-0.25 is supported.
breaking Dropped Node.js 14 and 16 support
fix Upgrade Node.js to 18+.
gotcha Memory leak when skipRebuild is true
fix Upgrade to 1.54.5+ which contains a fix for the memory leak.
gotcha Automatic externalization of all node_modules via esbuild-node-externals
fix To include specific node_modules in the bundle, add them to the 'external' option or override packager options.
npm install serverless-esbuild
yarn add serverless-esbuild
pnpm add serverless-esbuild

Minimal serverless.yml setup with a TypeScript handler bundled by serverless-esbuild.

// Install dependencies
// npm install -D serverless-esbuild esbuild esbuild-node-externals

// serverless.yml
service: my-service
provider:
  name: aws
  runtime: nodejs18.x
plugins:
  - serverless-esbuild
functions:
  hello:
    handler: src/handler.hello
    events:
      - http:
          path: hello
          method: get

// src/handler.ts
export const hello = async (event: any) => {
  return {
    statusCode: 200,
    body: JSON.stringify({ message: 'Hello from esbuild!' }),
  };
};