# GraphQL Playground for your mdbook A preprocessor for [mdbook](https://github.com/rust-lang/mdBook) to add a [GraphQL playground](https://github.com/graphql/graphql-playground). --- [](https://aschaeffer.github.io/mdbook-preprocessor-graphql-playground/) [![Crate](https://img.shields.io/crates/v/mdbook-preprocessor-graphql-playground.svg)](https://crates.io/crates/mdbook-preprocessor-graphql-playground) [](https://www.rust-lang.org/) [](https://github.com/aschaeffer/mdbook-preprocessor-graphql-playground/actions?query=workflow%3ARust) []() []() [![downloads](https://img.shields.io/crates/d/mdbook-preprocessor-graphql-playground.svg)](https://crates.io/crates/mdbook-preprocessor-graphql-playground) --- [![preview](book/src/images/screenshot.png)](book/src/images/screenshot.png) ## Demo https://aschaeffer.github.io/mdbook-preprocessor-graphql-playground/ ## Usage 1. Install `mdbook-preprocessor-graphql-playground` ```shell cargo install mdbook-preprocessor-graphql-playground ``` 2. Add to `book.toml`: ```toml [preprocessor.graphql-playground] command = "mdbook-graphql-playground" renderer = ["html"] [output] [output.html] additional-js = ["graphql-playground-react-middleware.js", "graphql-playground.js"] additional-css = ["graphql-playground.css"] ``` 3. Copy assets into the book root directory: ```shell cp assets/graphql-playground.css cp assets/graphql-playground.js cp assets/graphql-playground-react-middleware.js cp assets/images/* /src/images/ ``` 4. Create a [query file](#query-files) ```shell mkdir -p /queries/swapi nano /queries/swapi/all-planets.query.graphql ``` 5. Create a [config file](#config-files) ```shell mkdir /configs nano /configs/swapi.json ``` 6. Embed the GraphQL Playground in your markdown files ``` {{ graphql_playground(config="/configs/swapi.json") }} ``` ### Query files * You can have multiple queries ```graphql query AllPlanetsQuery { allPlanets { planets { name diameter } } } ``` ### Config files * You can have multiple config files * You can have multiple tabs, each refers to a query ```json { "title": "The Star Wars API", "description": "Explore the star wars API using mdbook-preprocessor-graphql-playground", "endpoint": "https://swapi-graphql.netlify.app/.netlify/functions/index", "tabs": [ { "name": "All Planets", "url": "/queries/swapi/all-planets.query.graphql" } ] } ``` ### Use a config in the book 1. Embed with the `graphql_playground` function 2. Specify the location of the config file with the `config` parameter ``` {{ graphql_playground(config="/configs/swapi.json") }} ``` ### Example A full example can be found [in this repository](https://github.com/aschaeffer/mdbook-preprocessor-graphql-playground/tree/main/book)