serverless-hooks
v1.0.0
Published
Run npm scripts on serverless hook events
Downloads
15,140
Maintainers
Readme
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