graphql-yoga
Version:
<div align="center"><img src="./website/public/cover.png" width="720" /></div>
133 lines (99 loc) • 5.6 kB
Markdown
<div align="center"><img src="./website/public/cover.png" width="720" /></div>
<div align="center">
<h3>GraphQL Yoga</h3>
<h6>Fully-featured GraphQL Server with focus on easy setup, performance & great developer experience</h6>
<a href="https://www.the-guild.dev/graphql/yoga-server/docs"><b>Go to documenation</b></a>
</div>
<br />
<div align="center">





</div>
## Quick start
### Install
```sh
pnpm add graphql-yoga graphql
```
### Start
Make a schema, create Yoga and start a Node server:
```ts
import { createServer } from 'node:http'
import { createSchema, createYoga } from 'graphql-yoga'
const yoga = createYoga({
schema: createSchema({
typeDefs: /* GraphQL */ `
type Query {
hello: String
}
`,
resolvers: {
Query: {
hello: () => 'Hello from Yoga!'
}
}
})
})
const server = createServer(yoga)
server.listen(4000, () => {
console.info('Server is running on http://localhost:4000/graphql')
})
```
## Overview
- **Easiest way to run a GraphQL server:** Sensible defaults & includes everything you need with
minimal setup (we also export a platform/env-agnostic handler so you can build your own wrappers
easily).
- **Includes Subscriptions:** Built-in support for GraphQL subscriptions using
[**S**erver-**S**ent **E**vents](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events).
- **Compatible:** Works with all GraphQL clients
([Apollo](https://www.apollographql.com/docs/react/), [Relay](https://relay.dev/),
[Urql](https://formidable.com/open-source/urql/)...) and fits seamless in your GraphQL workflow.
- **WHATWG Fetch API:** the core package depends on
[WHATWG Fetch API](https://fetch.spec.whatwg.org/) so it can run and deploy on any environment
(Serverless, Workers, Deno, Node).
- **Easily Extendable:** New GraphQL-Yoga support all [`envelop`](https://www.envelop.dev) plugins.
## [Features](https://www.the-guild.dev/graphql/yoga-server/docs)
- Fully typed with [TypeScript](https://www.typescriptlang.org)
- [GraphQL over HTTP spec compliant](https://github.com/enisdenjo/graphql-http/tree/master/implementations/graphql-yoga)
- [GraphiQL included](https://www.the-guild.dev/graphql/yoga-server/docs/features/graphiql)
- [File uploads with GraphQL Multipart Request spec](https://www.the-guild.dev/graphql/yoga-server/docs/features/file-uploads)
- [Subscriptions and realtime capabilities](https://www.the-guild.dev/graphql/yoga-server/docs/features/subscriptions)
- [Automatic persisted queries](https://www.the-guild.dev/graphql/yoga-server/docs/features/automatic-persisted-queries)
- [Built-in parsing and validation caching](https://www.the-guild.dev/graphql/yoga-server/docs/features/parsing-and-validation-caching)
- [Testing utilities](https://www.the-guild.dev/graphql/yoga-server/docs/features/testing)
- Supports [ESM](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules)
- Runs **everywhere**, including environments like:
- [Deno](https://www.the-guild.dev/graphql/yoga-server/docs/integrations/integration-with-deno)
- [Bun](https://www.the-guild.dev/graphql/yoga-server/docs/integrations/integration-with-bun)
- [Cloudflare Workers](https://www.the-guild.dev/graphql/yoga-server/docs/integrations/integration-with-cloudflare-workers)
- [AWS Lambda](https://www.the-guild.dev/graphql/yoga-server/docs/integrations/integration-with-aws-lambda)
- [_And other..._](https://www.the-guild.dev/graphql/yoga-server/docs/integrations/z-other-environments)
- [_And more..._](https://www.the-guild.dev/graphql/yoga-server/docs)
## [Documentation](https://www.the-guild.dev/graphql/yoga-server/docs)
Our [documentation website](https://www.the-guild.dev/graphql/yoga-server/docs) will help you get
started.
## [Examples](https://github.com/dotansimha/graphql-yoga/tree/main/examples)
We've made sure developers can quickly start with GraphQL Yoga by providing a comprehensive set of
examples.
[See all of them in the `examples/` folder.](https://github.com/dotansimha/graphql-yoga/tree/main/examples)
## [Comparison](https://www.the-guild.dev/graphql/yoga-server/docs/comparison)
Read more about how GraphQL Yoga compares to other servers in the ecosystem
[here](https://www.the-guild.dev/graphql/yoga-server/docs/comparison).
## Contributing
If this is your first time contributing to this project, please do read our
[Contributor Workflow Guide](https://github.com/the-guild-org/Stack/blob/master/CONTRIBUTING.md)
before you get started off.
For this project in particular, to get started on `stage/2-failing-test`:
1. Install [Node.js](https://nodejs.org/)
2. Run in your terminal: `npm i -g pnpm@8 && pnpm install && pnpm build`
3. Add tests to `packages/graphql-yoga/__tests__` using [Jest](https://jestjs.io/docs/api) APIs
4. Run the tests with `pnpm test`
Feel free to open issues and pull requests. We're always welcome support from the community.
## Code of Conduct
Help us keep Yoga open and inclusive. Please read and follow our
[Code of Conduct](https://github.com/the-guild-org/Stack/blob/master/CODE_OF_CONDUCT.md) as adopted
from [Contributor Covenant](https://www.contributor-covenant.org/).
## License
MIT