# README
graphql-schema-picker
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.
Motivation
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.
Example
For a realistic example of what a Hasura GraphQL schema looks like, check out our example SDL file (Schema Definition Language).
Getting Started
Installing
Eventually, I may package this up in Tea and maybe even Homebrew (via Goreleaser).
With go install
go install github.com/kevinmichaelchen/graphql-schema-picker@latest
With Docker
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
Similar Tools
- 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
Contributing
Building
go run cmd/graphql-schema-picker/main.go \
--debug \
pick \
--output examples/pruned.sdl.graphqls \
--sdl-file examples/hasura.sdl.graphqls \
--definitions Aircrafts
Releasing
Create tags with xc tag
and push them with git push --tags
.
Tasks
build
Builds the Go program into a local binary.
goreleaser build --clean --single-target
tag
Create a new Git tag
sh <(curl https://tea.xyz) +github.com/caarlos0/svu \
git tag -a $(svu next) -m "$(svu next)"