Validate Plugin Configuration

Learn how to create your own plugins for GraphQL Code Generator. You can use plugins to generate code, documents, or even to modify the schema.

Each plugin can also provide a function to validate the configuration before executing it.

You can use this function to:

  • test for other plugin’s existence (for example, if your plugin requires another plugin to function correctly)
  • validate the name and path of the output file
  • validate the schema or documents

And much more!

To add your plugin validation method, export a function called validate from your plugin file:

module.exports = {
  plugin(schema, documents, config, info) {
    const typesMap = schema.getTypeMap()

    return Object.keys(typesMap).join('\n')
  },
  validate(schema, documents, config, outputFile, allPlugins) {}
}

You can now check the schema, documents, configuration, output file and sibling plugins, and in case something does not fits your requirements, throw an Error:

module.exports = {
  plugin(schema, documents, config, info) {
    const typesMap = schema.getTypeMap()

    return Object.keys(typesMap).join('\n')
  },
  validate(schema, documents, config, outputFile, allPlugins) {
    if (!config.mustHave) {
      throw new Error(`You must specify "mustHave" in my plugin configuration!`)
    }
  }
}