π¨ A Serverless framework plugin to bundle JavaScript and TypeScript with extremely fast esbuild
Serverless plugin for zero-config JavaScript and TypeScript code bundling using promising fast & furious esbuild bundler and minifier
sls package, sls deploy and sls deploy functionsls invoke localserverless-offlineNote: 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.
yarn add --dev serverless-esbuild
# or
npm install -D serverless-esbuild
Add the following plugin to your serverless.yml:
plugins:
- serverless-esbuild
By default, no configuration required, but you can change esbuild behavior in custom esbuild section in serverless.yaml config:
custom:
esbuild:
bundle: true
minify: false
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'].
See example folder for a minimal example.
All files from package/include will be included in the final build file. See Exclude/Include
The normal Serverless deploy procedure will automatically compile with esbuild:
serverless create -t aws-nodejsserverless deployThe plugin integrates very well with serverless-offline to
simulate AWS Lambda and AWS API Gateway locally.
Add the plugins to your serverless.yml file and make sure that serverless-esbuild
precedes serverless-offline as the order is important:
plugins:
...
- serverless-esbuild
...
- serverless-offline
...
Run serverless offline or serverless offline start to start the Lambda/API simulation.
In comparison to serverless offline, the start command will fire an init and a end lifecycle hook which is needed for serverless-offline and e.g. serverless-dynamodb-local to switch off resources (see below)
Configure your service the same as mentioned above, but additionally add the serverless-dynamodb-local
plugin as follows:
plugins:
- serverless-esbuild
- serverless-dynamodb-local
- serverless-offline
Run serverless offline start.
To run your compiled functions locally you can:
$ serverless invoke local --function <function-name>
Options are:
--function or -f (required) is the name of the function to run--path or -p (optional) path to JSON or YAML file holding input data--data or -d (optional) input dataInspired by serverless-plugin-typescript
We use cookies
We use cookies to analyze traffic and improve your experience. You can accept or reject analytics cookies.