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