Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time
linkTitle title description menu
How to write plugins for gqlgen
Use plugins to customize code generation and integrate with other libraries
parent weight

Plugins provide a way to hook into the gqlgen code generation lifecycle. In order to use anything other than the default plugins you will need to create your own entrypoint:

Using a plugin

// +build ignore

package main

import (


func main() {
	cfg, err := config.LoadConfigFromDefaultLocations()
	if err != nil {
		fmt.Fprintln(os.Stderr, "failed to load config", err.Error())

	err = api.Generate(cfg,
		api.AddPlugin(yourplugin.New()), // This is the magic line
	if err != nil {
		fmt.Fprintln(os.Stderr, err.Error())

Writing a plugin

There are currently only two hooks:

  • MutateConfig: Allows a plugin to mutate the config before codegen starts. This allows plugins to add custom directives, define types, and implement resolvers. see modelgen for an example
  • GenerateCode: Allows a plugin to generate a new output file, see stubgen for an example

Take a look at plugin.go for the full list of available hooks. These are likely to change with each release.