From 628a5c88fa2172e33a1e15c350974c1b3aa980e2 Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Tue, 26 Feb 2019 16:14:28 +0200 Subject: [PATCH] Use the README.md from `packages/apollo-server` as the monorepo root README.md. --- README.md | 158 +------------------------------ packages/apollo-server/README.md | 158 ++++++++++++++++++++++++++++++- 2 files changed, 155 insertions(+), 161 deletions(-) mode change 100644 => 120000 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 4f31616a..00000000 --- a/README.md +++ /dev/null @@ -1,157 +0,0 @@ -# Apollo Server -## GraphQL Server for Express, Koa, Hapi, Lambda, and more. - -[![npm version](https://badge.fury.io/js/apollo-server-core.svg)](https://badge.fury.io/js/apollo-server-core) -[![Build Status](https://circleci.com/gh/apollographql/apollo-server.svg?style=svg)](https://circleci.com/gh/apollographql/apollo-server) -[![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/apollo) - - -Apollo Server is a community-maintained open-source GraphQL server. It works with pretty much all Node.js HTTP server frameworks, and we're happy to take PRs for more! Apollo Server works with any GraphQL schema built with [GraphQL.js](https://github.com/graphql/graphql-js), so you can build your schema with that directly or with a convenience library such as [graphql-tools](https://www.apollographql.com/docs/graphql-tools/). - -## Principles - -Apollo Server is built with the following principles in mind: - -- **By the community, for the community**: Apollo Server's development is driven by the needs of developers. -- **Simplicity**: By keeping things simple, Apollo Server is easier to use, easier to contribute to, and more secure. -- **Performance**: Apollo Server is well-tested and production-ready. - -Anyone is welcome to contribute to Apollo Server, just read [CONTRIBUTING.md](./CONTRIBUTING.md), take a look at the [roadmap](./ROADMAP.md) and make your first PR! - -## Getting started - -Apollo Server is super easy to set up. Just `npm install apollo-server-`, write a GraphQL schema, and then use one of the following snippets to get started. For more info, read the [Apollo Server docs](https://www.apollographql.com/docs/apollo-server/v2). - -There are two installation patterns: - -* **[Standalone](#Installation-standalone)**: To get started without integrating with an existing web framework, use the `apollo-server` package. -* **[Integrations](#Installation-integrations)**: For applications which have already use a web framework (e.g. `express`, `koa`, `hapi`, etc.), use the appropriate Apollo Server integration package. - -### Installation: Standalone - -In a new project, install the `apollo-server` and `graphql` dependencies using: - - npm install apollo-server graphql - -Then, create an `index.js` which defines the schema and its functionality (i.e. resolvers): - -```js -const { ApolloServer, gql } = require('apollo-server'); - -// The GraphQL schema -const typeDefs = gql` - type Query { - "A simple type for getting started!" - hello: String - } -`; - -// A map of functions which return data for the schema. -const resolvers = { - Query: { - hello: () => 'world', - }, -}; - -const server = new ApolloServer({ - typeDefs, - resolvers, -}); - -server.listen().then(({ url }) => { - console.log(`🚀 Server ready at ${url}`); -}); -``` - -> Due to its human-readability, we recommend using [schema-definition language (SDL)](https://www.apollographql.com/docs/apollo-server/essentials/schema.html#sdl) to define a GraphQL schema but [a `GraphQLSchema` object from `graphql-js`](https://github.com/graphql/graphql-js/#using-graphqljs) can also be specified in place of `typeDefs` and `resolvers` using the `schema` property: -> -> ```js -> const server = new ApolloServer({ -> schema: ... -> }); -> ``` - -Finally, start the server using `node index.js` and open your web-browser to the URL which is output on the console. - -For more details, check out the Apollo Server [Getting Started guide](https://www.apollographql.com/docs/apollo-server/getting-started.html) of the documentation, or for a more comprehensive understanding, see the [fullstack tutorial](https://www.apollographql.com/docs/tutorial/introduction.html). - -For questions, the [Apollo commuinty on Spectrum.chat](https://spectrum.chat) is a great place to get assistance. - -## Installation: Integrations - -While the standalone installation above can be used without making a decision about which web framework to use, the Apollo Server integration packages are paired with specific web frameworks (e.g. Express, Koa, hapi). - -The following web frameworks have Apollo Server integrations, and each of these linked integrations has its own installation instructions and examples on its package `README.md`: - -- [Express](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-express) _(Most popular)_ -- [Koa](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-koa) -- [Hapi](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-hapi) -- [Fastify](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-fastify) -- [Amazon Lambda](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-lambda) -- [Micro](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-micro) -- [Azure Functions](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-azure-functions) -- [Google Cloud Functions](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-cloud-functions) -- [Cloudflare](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-cloudflare) _(Experimental)_ - -See the links above for more details on a specific integration. - -## Context - -A request context is available for each request. When `context` is defined as a function, it will be called on each request and receive an object containing a `req` property which represents the request. - -By returning an object from the `context` function, it will be available as the third positional paramter of the resolvers: - -```js -new ApolloServer({ - typeDefs, - resolvers: { - Query: { - books: (parent, args, context, info) => { - console.log(context.myProperty); // Will be `true`! - return books; - }, - } - }, - context: async ({ req }) => { - return { - myProperty: true - }; - }, -}) -``` - -## Documentation - -The [Apollo Server documentation](https://apollographql.com/docs/apollo-server/) contains many of the details which are necessary to get started with both GraphQL and Apollo Server. - -The raw source content of that documentation is available within the `docs/` directory of this monorepo, but the _Edit on GitHub_ buttons at the bottom of each page can be used to contribute suggestions or improvements to the published content. - -## Development - -If you want to develop or contribute to Apollo Server itself, we suggest the following: - -- Fork this repository - -- Install the Apollo Server project in your computer - -``` -git clone https://github.com/[your-user]/apollo-server -cd apollo-server -npm install -cd packages/apollo-server-/ -npm link -``` - -- Install your local Apollo Server in other App - -``` -cd ~/myApp -npm link apollo-server- -``` - -For more help with contributing, visit the _Contributing_ channel on the [Apollo community in Spectrum.chat](https://spectrum.chat/apollo). - -## Maintainers - -- [@martijnwalraven](https://github.com/martijnwalraven) (Apollo) -- [@abernix](https://github.com/abernix) (Apollo) diff --git a/README.md b/README.md new file mode 120000 index 00000000..2a185b02 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +packages/apollo-server/README.md \ No newline at end of file diff --git a/packages/apollo-server/README.md b/packages/apollo-server/README.md index fb99470c..4f31616a 100644 --- a/packages/apollo-server/README.md +++ b/packages/apollo-server/README.md @@ -1,7 +1,157 @@ -# Apollo Server +# Apollo Server +## GraphQL Server for Express, Koa, Hapi, Lambda, and more. -[![npm version](https://badge.fury.io/js/apollo-server.svg)](https://badge.fury.io/js/apollo-server) [![Build Status](https://circleci.com/gh/apollographql/apollo-server.svg?style=svg)](https://circleci.com/gh/apollographql/apollo-server) [![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/apollo) +[![npm version](https://badge.fury.io/js/apollo-server-core.svg)](https://badge.fury.io/js/apollo-server-core) +[![Build Status](https://circleci.com/gh/apollographql/apollo-server.svg?style=svg)](https://circleci.com/gh/apollographql/apollo-server) +[![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/apollo) -Apollo Server is a production ready GraphQL Server. [Read the docs.](https://www.apollographql.com/docs/apollo-server/) -[Read the CHANGELOG.](https://github.com/apollographql/apollo-server/blob/master/CHANGELOG.md) +Apollo Server is a community-maintained open-source GraphQL server. It works with pretty much all Node.js HTTP server frameworks, and we're happy to take PRs for more! Apollo Server works with any GraphQL schema built with [GraphQL.js](https://github.com/graphql/graphql-js), so you can build your schema with that directly or with a convenience library such as [graphql-tools](https://www.apollographql.com/docs/graphql-tools/). + +## Principles + +Apollo Server is built with the following principles in mind: + +- **By the community, for the community**: Apollo Server's development is driven by the needs of developers. +- **Simplicity**: By keeping things simple, Apollo Server is easier to use, easier to contribute to, and more secure. +- **Performance**: Apollo Server is well-tested and production-ready. + +Anyone is welcome to contribute to Apollo Server, just read [CONTRIBUTING.md](./CONTRIBUTING.md), take a look at the [roadmap](./ROADMAP.md) and make your first PR! + +## Getting started + +Apollo Server is super easy to set up. Just `npm install apollo-server-`, write a GraphQL schema, and then use one of the following snippets to get started. For more info, read the [Apollo Server docs](https://www.apollographql.com/docs/apollo-server/v2). + +There are two installation patterns: + +* **[Standalone](#Installation-standalone)**: To get started without integrating with an existing web framework, use the `apollo-server` package. +* **[Integrations](#Installation-integrations)**: For applications which have already use a web framework (e.g. `express`, `koa`, `hapi`, etc.), use the appropriate Apollo Server integration package. + +### Installation: Standalone + +In a new project, install the `apollo-server` and `graphql` dependencies using: + + npm install apollo-server graphql + +Then, create an `index.js` which defines the schema and its functionality (i.e. resolvers): + +```js +const { ApolloServer, gql } = require('apollo-server'); + +// The GraphQL schema +const typeDefs = gql` + type Query { + "A simple type for getting started!" + hello: String + } +`; + +// A map of functions which return data for the schema. +const resolvers = { + Query: { + hello: () => 'world', + }, +}; + +const server = new ApolloServer({ + typeDefs, + resolvers, +}); + +server.listen().then(({ url }) => { + console.log(`🚀 Server ready at ${url}`); +}); +``` + +> Due to its human-readability, we recommend using [schema-definition language (SDL)](https://www.apollographql.com/docs/apollo-server/essentials/schema.html#sdl) to define a GraphQL schema but [a `GraphQLSchema` object from `graphql-js`](https://github.com/graphql/graphql-js/#using-graphqljs) can also be specified in place of `typeDefs` and `resolvers` using the `schema` property: +> +> ```js +> const server = new ApolloServer({ +> schema: ... +> }); +> ``` + +Finally, start the server using `node index.js` and open your web-browser to the URL which is output on the console. + +For more details, check out the Apollo Server [Getting Started guide](https://www.apollographql.com/docs/apollo-server/getting-started.html) of the documentation, or for a more comprehensive understanding, see the [fullstack tutorial](https://www.apollographql.com/docs/tutorial/introduction.html). + +For questions, the [Apollo commuinty on Spectrum.chat](https://spectrum.chat) is a great place to get assistance. + +## Installation: Integrations + +While the standalone installation above can be used without making a decision about which web framework to use, the Apollo Server integration packages are paired with specific web frameworks (e.g. Express, Koa, hapi). + +The following web frameworks have Apollo Server integrations, and each of these linked integrations has its own installation instructions and examples on its package `README.md`: + +- [Express](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-express) _(Most popular)_ +- [Koa](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-koa) +- [Hapi](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-hapi) +- [Fastify](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-fastify) +- [Amazon Lambda](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-lambda) +- [Micro](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-micro) +- [Azure Functions](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-azure-functions) +- [Google Cloud Functions](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-cloud-functions) +- [Cloudflare](https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-cloudflare) _(Experimental)_ + +See the links above for more details on a specific integration. + +## Context + +A request context is available for each request. When `context` is defined as a function, it will be called on each request and receive an object containing a `req` property which represents the request. + +By returning an object from the `context` function, it will be available as the third positional paramter of the resolvers: + +```js +new ApolloServer({ + typeDefs, + resolvers: { + Query: { + books: (parent, args, context, info) => { + console.log(context.myProperty); // Will be `true`! + return books; + }, + } + }, + context: async ({ req }) => { + return { + myProperty: true + }; + }, +}) +``` + +## Documentation + +The [Apollo Server documentation](https://apollographql.com/docs/apollo-server/) contains many of the details which are necessary to get started with both GraphQL and Apollo Server. + +The raw source content of that documentation is available within the `docs/` directory of this monorepo, but the _Edit on GitHub_ buttons at the bottom of each page can be used to contribute suggestions or improvements to the published content. + +## Development + +If you want to develop or contribute to Apollo Server itself, we suggest the following: + +- Fork this repository + +- Install the Apollo Server project in your computer + +``` +git clone https://github.com/[your-user]/apollo-server +cd apollo-server +npm install +cd packages/apollo-server-/ +npm link +``` + +- Install your local Apollo Server in other App + +``` +cd ~/myApp +npm link apollo-server- +``` + +For more help with contributing, visit the _Contributing_ channel on the [Apollo community in Spectrum.chat](https://spectrum.chat/apollo). + +## Maintainers + +- [@martijnwalraven](https://github.com/martijnwalraven) (Apollo) +- [@abernix](https://github.com/abernix) (Apollo)