UNPKG

@chillicream/nitro-server-adapter-plugin

Version:

Server Adapter Plugin for Nitro GraphQL IDE

151 lines (113 loc) 3.59 kB
# Nitro Server Adapter Plugin _Server Adapter Plugin for Nitro GraphQL IDE_ ## Description This plugin allows to setup _Nitro GraphQL IDE_ for your GraphQL Yoga server or any other server that implements the Server Adapter (see `@whatwg-node`). You can use a **cdn** hosted version of the app or a **self** hosted version using the ad hoc package. ## Installation Install this package and the required `peerDependencies` in your project: ```sh npm install @chillicream/nitro-server-adapter-plugin --save-dev # or yarn add @chillicream/nitro-server-adapter-plugin --dev # or pnpm add @chillicream/nitro-server-adapter-plugin --save-dev ``` **Note**: `@chillicream/nitro-embedded` is optional and only needed if you prefer to **self** host the app. ## Usage Add the plugin to your server. ```javascript import { useNitro } from "@chillicream/nitro-server-adapter-plugin"; import { createYoga } from "graphql-yoga"; import { createServer } from "node:http"; const yoga = createYoga({ schema: // Schema omitted for brevity, plugins: [useNitro()], // Adds Nitro graphiql: false, // Disables the default GraphQL IDE }); const server = createServer(yoga); server.listen(3000, () => { console.log("Running a GraphQL API server at http://localhost:3000/graphql"); }); ``` ### Extended configuration - To pin a specific version instead of using "latest": ```javascript useNitro({ mode: "cdn", target: { version: "x.0.0" }, }); ``` - To use your own infrastructure: ```javascript useNitro({ mode: "cdn", target: "https://mycompany.com/nitro", }); ``` ### Custom options - To pass `options` supported by _Nitro GraphQL IDE_: ```javascript useNitro({ mode: "cdn", options: { title: "Nitro", }, }); ``` ## Recipes <details id="graphql-yoga"> <summary><a href="#graphql-yoga"><sub><sup>🔗</sup></sub></a> With <a href="https://the-guild.dev/graphql/yoga-server">graphql-yoga</a></summary> <hr> ```javascript import { useNitro } from "@chillicream/nitro-server-adapter-plugin"; import { createYoga } from "graphql-yoga"; import { createServer } from "node:http"; const yoga = createYoga({ schema: createSchema({ typeDefs: /* GraphQL */ ` type Query { greeting: String } `, resolvers: { Query: { greeting: () => "Hello, World!", }, }, }), plugins: [useNitro()], // Adds Nitro graphiql: false, // Disables the default GraphQL IDE }); const server = createServer(yoga); server.listen(3000, () => { console.log("Running a GraphQL API server at http://localhost:3000/graphql"); }); ``` <hr> </details> <details id="graphql-yoga-with-grats"> <summary><a href="#graphql-yoga-with-grats"><sub><sup>🔗</sup></sub></a> With <a href="https://the-guild.dev/graphql/yoga-server">graphql-yoga</a> and <a href="https://grats.capt.dev/">grats</a></summary> <hr> ```typescript import { useNitro } from "@chillicream/nitro-server-adapter-plugin"; import { createYoga, createSchema } from "graphql-yoga"; import { createServer } from "node:http"; import { getSchema } from "./schema"; // Will be generated by Grats /** @gqlType */ type Query = unknown; /** @gqlField */ export function hello(_: Query): string { return "Hello world!"; } const yoga = createYoga({ schema: getSchema(), plugins: [useNitro()], // Adds Nitro graphiql: false, // Disables the default GraphQL IDE }); const server = createServer(yoga); server.listen(3000, () => { console.log("Running a GraphQL API server at http://localhost:3000/graphql"); }); ``` <hr> </details>