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 deployandsls deploy function - Supports
sls invoke local - Integrates nicely with
serverless-offline
yarn add -D parcel-bundler serverless-plugin-parcelor
npm install -D parcel-bundler serverless-plugin-parcelAdd the following plugin to your serverless.yml:
plugins:
- serverless-plugin-parcelBy 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: falseCheck 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-offlineRun serverless offline start.
To run your compiled functions locally you can:
$ serverless invoke local --function <function-name>Options are:
--functionor-f(required) is the name of the function to run--pathor-p(optional) path to JSON or YAML file holding input data--dataor-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-supportin .babelrc:
{
"plugins": [
"source-map-support"
]
...
}