
A CLI for selectively pruning your GraphQL schemas.
The CLI accepts a Schema Definition Language file, and then selectively picks (or filters out) certain elements.
This tool was born out of a desire to reuse Hasura's schema in upstream microservices. In my case, it meant discarding the tens of thousands of lines in the schema that was introspected from Hasura, and really only paying attention to the few types I cared about.
For a realistic example of what a Hasura GraphQL schema looks like, check out our example SDL file (Schema Definition Language).
Eventually, I may package this up in pkgx and maybe even Homebrew (via Goreleaser).
go install github.com/kevinmichaelchen/graphql-schema-picker@latest
docker pull ghcr.io/kevinmichaelchen/graphql-schema-picker
docker run --rm ghcr.io/kevinmichaelchen/graphql-schema-picker --help
docker run --rm \
-v $(pwd)/examples:/examples \
ghcr.io/kevinmichaelchen/graphql-schema-picker \
--debug \
pick \
--output /examples/pruned.sdl.graphqls \
--sdl-file /examples/hasura.sdl.graphqls \
--definitions Aircrafts
- https://github.com/n1ru4l/graphql-public-schema-filter
- https://github.com/kesne/graphql-schema-subset
- https://github.com/xometry/graphql-code-generator-subset-plugin
- https://the-guild.dev/graphql/tools/docs/api/classes/wrap_src.pruneschema
- https://pothos-graphql.dev/docs/plugins/sub-graph
go run cmd/graphql-schema-picker/main.go \
--debug \
pick \
--config examples/config.toml \
--sdl-file examples/hasura.sdl.graphqls \
--output examples/pruned.sdl.graphqls \
--definitions Aircrafts,AircraftsInsertInput
Follow Conventional Commits and SemVer releases should happen automatically via GitHub Actions.
Builds the Go program into a local binary.
pkgx goreleaser build --clean --single-target