Serverless plugin for zero-config ES6/7 and Typescript support
This project is mostly a fork of serverless-plugin-typescript and was heavily inspired by that.
- Zero-config: Works out of the box without the need to install any other compiler or plugins
- Supports
sls package
,sls deploy
andsls deploy function
- Supports
sls invoke local
- Integrates nicely with
serverless-offline
yarn add -D parcel-bundler serverless-plugin-parcel
or
npm install -D parcel-bundler serverless-plugin-parcel
Add the following plugin to your serverless.yml
:
plugins:
- serverless-plugin-parcel
By default, no configuration required, but you can change Parcel behavior by creating
custom .babelrc
file and in custom parcel
section in serverless.yaml
config:
custom:
parcel:
target: node
cache: false
Check parceljs documentation for the full list of available options.
See example folder for a minimal example.
The normal Serverless deploy procedure will automatically compile with Parcel:
- Create the Serverless project with
serverless create -t aws-nodejs
- Install Serverless Parcel Plugin as above
- Deploy with
serverless deploy
The 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-plugin-parcel
precedes serverless-offline
as the order is important:
plugins: ...
- serverless-plugin-parcel
...
- 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-plugin-parcel
- 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 data
You can easily enable support for source-maps (making stacktraces easier to read) by installing and using the following plugin:
yarn add -D source-map-support
// inside of your function
import 'source-map-support/register';
or using babel plugin:
yarn add source-map-support
yarn add -D babel-plugin-source-map-support
in .babelrc
:
{
"plugins": [
"source-map-support"
]
...
}