Serverless Hooks

Run npm scripts on serverless hook events

View on Github

Serverless Hooks

This Serverless plugin allows triggering execution of npm scripts when serverless events are fired.

Simply declare npm scripts with a name of the form hook:EVENT where EVENT is the name of a serverless hook event, i.e.:

  • hook:before:offline:start: Run script before serverless offline launches. This can be particularly useful to setup the local environment, such as launching a local kinesis and initializing it by creating some streams.
  • hook:after:offline:start: Run cleanup scripts after serverless offline terminates.
  • hook:before:package:initialize: Run script before the packaging initialization.

Installation

First, add the plugin to your project:

npm install --save-dev serverless-hooks

Then, inside your project's serverless.yml file add serverless-hooks to the top-level plugins section. If there is no plugin section you will need to add it to the file.

plugins:
  - serverless-hooks

Configuration

Plugin behavior may be configured by adding keys to the serverless-hooks section in the top-level custom section.

These are the configuration entries and their default values:

custom:
  serverless-hooks:
    hookPrefix: hook    # The npm script prefix to indicate a serverless hook script
    runAllOptions:      # See https://github.com/mysticatea/npm-run-all/blob/HEAD/docs/node-api.md for details
      stderr:           # boolean to enable stderr, or path to file
      stdout:           # boolean to enable stdout, or path to file
      stdin:            # boolean to enable stdin, or path to file

Execution

When scripts are executed, the environment variable SLS_CONTEXT contains a path to a JSON file with the contents of the serverless object. The available properties are:

  • invocationId: Unique GUID for the current serverless invocation
  • version: Serverless framework version
  • cliCommands: Array with provided CLI commands (e.g. [ 'offline' ])
  • cliOptions: Object with provided CLI options
  • servicePath: Path to directory containing serverless.yml file
  • service: Object with contents of resolved serverless.yml file