@hewmen/serverless-plugin-typescript

[![serverless](http://public.serverless.com/badges/v3.svg)](http://www.serverless.com)

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@hewmen/serverless-plugin-typescript
811.1.174 years ago4 years agoMinified + gzip package size for @hewmen/serverless-plugin-typescript in KB

Readme

serverless-plugin-typescript
serverless Serverless plugin for zero-config Typescript support

HEWMEN Update

Original NPM Module: http://www.npmjs.com/package/serverless-plugin-typescript This version of serverless-typescript-plugin fixes symbolic link issues with Windows OS resulting in the following errors:
1) EPERM: operation not permitted, scandir...
2) EPERM: operation not permitted, symlink...
When attaching the "nodemodules" folder to the build Created PR for original plugin: http://www.github.com/prismagraphql/serverless-plugin-typescript/pull/103

Features

  • Zero-config: Works out of the box without the need to install any other compiler or plugins
  • Supports ES2015 syntax + features (export, import, async, await, Promise, ...)
  • Supports sls package, sls deploy and sls deploy function
  • Supports sls invoke local + --watch mode

Install

```sh yarn add --dev @hewmen/serverless-plugin-typescript ``` or ``` npm install --save-dev @hewmen/serverless-plugin-typescript ``` Add the following plugin to your serverless.yml: ```yaml plugins: - '@hewmen/serverless-plugin-typescript' ```

Configure

See example folder
for a minimal example.

tsconfig.json

The default tsconfig.json file used by the plugin looks like this: ```json { "compilerOptions": {
"preserveConstEnums": true,
"strictNullChecks": true,
"sourceMap": 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.

Including extra files

All files from package/include will be included in the final build file. See Exclude/Include

Usage

Google Cloud Functions

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.

Automatic compilation

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

Usage with serverless-offline

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 @hewmen/serverless-plugin-typescript precedes serverless-offline as the order is important: ```yaml plugins:
...
- '@hewmen/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:
- '@hewmen/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.

Run a function locally

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

Enabling source-maps

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 .... } ```

Help & Community Slack Status

Join our Slack community if you run into issues or have questions. We love talking to you!