# Generators

Copy as Markdown[View as Markdown](/docs/plugins/generators.md)

***

EventCatalog generators are custom scripts executed before the build process begins.

During the catalog build, your configured generators run dynamically, providing the opportunity to utilize open-source generators and plugins or develop your own custom solutions.

### Why use generators?[​](#why-use-generators "Direct link to Why use generators?")

Generators can be used to automate areas of your catalog. Examples of this include API requests to get schemas from a cloud provider, or integrating with brokers. A generator script can be anything you want.

You can also use the [EventCatalog SDK](/docs/sdk.md) within your generators to interact with your catalog.

### Getting Started[​](#getting-started "Direct link to Getting Started")

When configuring a generator you need to define an entry point and it's custom configuration.

In the example below we create a new plugin called `plugin.js` located in the root of the project. The object below is configuration the plugin will receive.

eventcatalog.config.js

```
generators: [
    [
        // This generator called 'plugin.js' is located at in the root of your catalog
      '<rootDir>/plugin.js',
      // This is custom configuration your generator can use.
      {
        customValue: true,
        hello: 'world'
      },
    ],
    // more generators...
  ],
```

/plugin.js

```
const utils = require('@eventcatalog/sdk');

// Plugins require CJS files at the moment, this is being worked on...
const { getEvent } = utils.default(__dirname);

// The config value is your EventCatalog config
// The options value is the configuration you pass to your plugin
module.exports = async (config, options) => {

    // access to your eventcatalog.config.js file
    const { homepageLink } = config;

    // Get values from your custom configuration
    const { customValue, hello  } = options;

    // Call the EventCatalog SDK
    const event = await getEvent('InventoryAdjusted');
}
```

### Running your generators[​](#running-your-generators "Direct link to Running your generators")

To run your generators you need to call the command

```
npm run generate
```

Run generators in their debug mode.

```
npm run generate -- debug
```

EventCatalog will then run through your generators and call your scripts.
