Awesome
Babel Runtime for Serverless
Features
- Runs locally and deploys functions written in ES2015 syntax (via Babel)
- Classic and Modern JS Style handlers
- Browserifies, minifies your functions on deployment
Install
Note: Serverless v0.5.0 or higher is required.
- Install via npm in the root of your Serverless Project:
npm install serverless-runtime-babel --save
- In the
plugins
array in yours-project.json
add"serverless-runtime-babel"
- All done!
Usage
All you need is to set runtime
property of s-function.json
to babel
.
You could use the classic style handler when you need to call context.done()
or the modern style when your functions should return a promise.
Classic Style
/* handler.js */
'use strict';
module.exports.handler = function(event, context) {
/* Everything is the same but better */
let [name, age, isAdmin] = ['bob', 23, false];
let user = {name, age};
return context.done(null, {
isAdmin,
userName: user.name,
userAge: user.age
});
};
Modern JS Style
/* event.json */
{
"repos": [
"serverless/serverless",
"serverless/serverless-runtime-babel"
]
}
/* handler.js */
import "babel-polyfill"
import request from "request-promise"
const headers = {
'User-Agent': 'Serverless'
};
export default ({repos}) => {
return Promise.all(repos.map(repo => {
let uri = `https://api.github.com/repos/${repo}`
return request({headers, uri, json: true})
.then(({stargazers_count}) => ({repo, stars: stargazers_count}))
}))
}
Scaffold
You can use serverless function create
as usual — it will promt you for a runtime unless you add the -r babel
flag.
Examples
- GitHub stargazers example - Returns amount of starts for a GitHub repo
Options
Configuration options can be used by setting the custom.runtime
of s-function.json
. The following options are available:
-
babel
— An object with a Babel configuration -
minify
— When set totrue
, this will enable minification. Default:true
.
Browserify Options
Browserify options can be included as normal configuration options to the runtime
object. The following options are supported:
- handlerExt
- requires
- plugins
- transforms
- exclude
- ignore (defaults to
["aws-sdk"]
) - extensions
For more information on these options, please visit the Browserify Documentaton.
Example
Example Babel Runtime configuration with default values:
{
/*s-function.json*/
/*...*/
"runtime": "babel",
"custom": {
"runtime": {
"babel": {
"presets": ["es2015"]
},
"handlerExt": "js",
"requires": [],
"plugins": [],
"transforms": [],
"exclude": [],
"ignore": [
"aws-sdk"
],
"extensions": [],
"minify": true
}
},
/*...*/
}