Given subgraph schemas and a set of operations, reduce the subgraphs to only the elements needed for those operations and query planning by "tree shaking" the supergraph.
The code in this repository is experimental and has been provided for reference purposes only. Community feedback is welcome but this project may not be supported in the same way that repositories in the official Apollo GraphQL GitHub organization are. If you need help you can file an issue on this repository, contact Apollo to talk to an expert, or create a ticket directly in Apollo Studio.
npx github:@apollosolutions/schema-shaker \
--config supergraph.yaml \
--operations operations/*.graphql \
--out outdirThe supergraph.yaml config file format matches rover's supergraph compose config format.
The --operations argument is a file glob.
The --out argument is a folder to store a new supergraph config and subgraph schema files. Use the new supergraph config with rover supergraph compose to generate a new supergraph schema.
When --out is not set, the command prints a new supergraph config to stdout.
Generate a Federation 1 supergraph using --composer 1.
After tree shaking, the script recomposes the smaller subgraphs and revalidates the original operations against the new API schema. It will still output supergraph configs and subgraph schemas, but if there are errors in the console then they're most likely not valid.