Skip to content

Latest commit

 

History

History
52 lines (39 loc) · 1.97 KB

extending-configuration.md

File metadata and controls

52 lines (39 loc) · 1.97 KB

Extending and overriding configuration

Plugins can extend and override the internal configuration.

To do so, plugins may use the serverless.extendConfiguration(...) method. This is only allowed at pre-init stage of serverless. The method also takes care of resolving all variables in the given value. But it does not validate you input nor the target. Improper usage can cause serverless to fail.

The serverless.extendConfiguration(configurationPathKeys, value) method takes two arguments.

Argument Type Description
configurationPathKeys string[] Path of the configuration property to set; must not be empty
value string | object | array New value of the configuration property in configurationPathKeys

If configuration in configurationPathKeys does exist the value will be overwritten.
If configuration in configurationPathKeys does not exist the whole path will be created.

You can use it in plugin constructor, or if for some reason configuration extension is resolved asynchronously you may resort to asyncInit() method

class MyPlugin {
  constructor(serverless) {
    this.serverless = serverless;

    const value = {
      myKey: 'myValue',
    };
    this.serverless.extendConfiguration(['custom', 'myPlugin'], value);
  }
}

module.exports = MyPlugin;

If your plugin needs merging you need to take care of it yourself.

class MyPlugin {
  constructor(serverless) {
    this.serverless = serverless;

    const currentConfig = this.serverless.configurationInput.custom.myPlugin;
    const value = Object.assign(currentConfig, {
      myKey: 'myValue',
    });
    this.serverless.extendConfiguration(['custom', 'myPlugin'], value);
  }
}

module.exports = MyPlugin;