How to write plugins for gqlgen

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.