Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/aschaeffer/mdbook-preprocessor-graphql-playground

A preprocessor for mdbook to add GraphQL playgrounds.
https://github.com/aschaeffer/mdbook-preprocessor-graphql-playground

documentation-generator graphql mdbook mdbook-plugins mdbook-preprocessor

Last synced: 12 days ago
JSON representation

A preprocessor for mdbook to add GraphQL playgrounds.

Awesome Lists containing this project

README

        

# 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)