[](http://www.serverless.com) [](https://badge.fury.io/js/serverless-plugin-typescript) [
* Supports sls package, sls deploy and sls deploy function
* Supports sls invoke local + --watch mode
* Integrates nicely with serverless-offline
``sh`
yarn add --dev serverless-plugin-typescript typescriptor
npm install -D serverless-plugin-typescript typescript
Add the following plugin to your serverless.yml:
`yaml`
plugins:
- serverless-plugin-typescript
See example folder for a minimal example.
The default tsconfig.json file used by the plugin looks like this:
`json`
{
"compilerOptions": {
"preserveConstEnums": true,
"strictNullChecks": true,
"sourceMap": true,
"allowJs": true,
"target": "es5",
"outDir": ".build",
"moduleResolution": "node",
"lib": ["es2015"],
"rootDir": "./"
}
}
> Note 1: The outDir and rootDir options cannot be overwritten.
> Note 2: Don't confuse the tsconfig.json in this repository with the one mentioned above.
All files from package/include will be included in the final build file. See Exclude/Include
custom:
serverlessPluginTypescript:
tsConfigFileLocation: './tsconfig.build.json'`Usage
$3
When using with Google Cloud Functions via the serverless-google-cloudfunctions
plugin, you simply have to provide a
main field in your package.json:`js
{
// ...
"main": "handler.js",
// ..
}
`And this plugin will automatically compile your typescript correctly. Note
that the field must refer to the compiled file name, namely, ending with a
.js
extension.If a
main field was not found, then this plugin will use index.js. Before
compilation begins, it will check to see that the file indicated exists with a
.ts extension before actually trying to compile it.$3
The normal Serverless deploy procedure will automatically compile with Typescript:
- Create the Serverless project with
serverless create -t aws-nodejs
- Install Serverless Typescript as above
- Deploy with serverless deploy$3
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-typescript
precedes serverless-offline as the order is important:
`yaml
plugins:
...
- serverless-plugin-typescript
...
- 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)#### serverless-dynamodb-local
Configure your service the same as mentioned above, but additionally add the
serverless-dynamodb-local
plugin as follows:
`yaml
plugins:
- serverless-plugin-typescript
- serverless-dynamodb-local
- serverless-offline
`Run
serverless offline start.#### Other useful options
You can reduce the clutter generated by
serverless-offline with --dontPrintOutput and
disable timeouts with --noTimeout.$3
To run your compiled functions locally you can:
`bash
$ serverless invoke local --function
`Options are:
-
--function or -f (required) is the name of the function to run
- --watch - recompile and run a function locally on source changes
- --path or -p (optional) path to JSON or YAML file holding input data
- --data or -d (optional) input data$3
You can easily enable support for source-maps (making stacktraces easier to read) by installing and using the following plugin:
`sh
yarn add --dev source-map-support
``ts
// inside of your function
import 'source-map-support/register'
`If you are using webpack (most likely). Add
devtool: 'source-map' to webpack.config.js:
`js
module.exports = {
.... snip ....
devtool: 'source-map',
.... snip ....}
``