https://github.com/gajus/format-graphql
Formats GraphQL schema definition language (SDL) document.
https://github.com/gajus/format-graphql
formatter graphql linter sdl sort
Last synced: 24 days ago
JSON representation
Formats GraphQL schema definition language (SDL) document.
- Host: GitHub
- URL: https://github.com/gajus/format-graphql
- Owner: gajus
- License: other
- Created: 2019-10-27T15:33:55.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-02-29T17:11:20.000Z (about 1 year ago)
- Last Synced: 2025-04-10T01:08:51.385Z (24 days ago)
- Topics: formatter, graphql, linter, sdl, sort
- Language: JavaScript
- Homepage:
- Size: 29.3 KB
- Stars: 72
- Watchers: 6
- Forks: 8
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# format-graphql
[](https://gitspo.com/mentions/gajus/format-graphql)
[](https://travis-ci.org/gajus/format-graphql)
[](https://coveralls.io/github/gajus/format-graphql)
[](https://www.npmjs.org/package/format-graphql)
[](https://github.com/gajus/canonical)
[](https://twitter.com/kuizinas)Formats GraphQL schema definition language (SDL) document.
---
* [Motivation](#motivation)
* [Behaviour](#behaviour)
* [Example](#example)
* [Usage](#usage)
* [Command Line](#command-line)
* [Node API](#node-api)
* [Hooks](#hooks)## Motivation
As schema grows in size, it becomes desirable to automate schema organisation. The primary function of `format-graphql` is to sort definitions and fields in an alphabetical order, therefore enabling predictable discovery and grouping of related schema entities.
## Behaviour
Alphabetically sorts definitions, fields and arguments.
### Example
Input:
```graphql
type Query {
bananas: [Banana!]!
apples: [Apple!]!
}type Apple {
name: String!
id: ID!
}type Banana {
name: String!
id: ID!
}```
Output:
```graphql
type Apple {
id: ID!
name: String!
}type Banana {
id: ID!
name: String!
}type Query {
apples: [Apple!]!
bananas: [Banana!]!
}```
## Usage
### Command Line
```bash
$ format-graphql --help
Sort GraphQL schema definition language (SDL) document.Positionals:
sdl-path Path to the GraphQL schema definition (SDL) document. [string]Options:
--version Show version number [boolean]
--help Show help [boolean]
--sort-arguments Sort on arguments [boolean] [default: true]
--sort-definitions Sort on definitions [boolean] [default: true]
--sort-enums Sort on enums [boolean] [default: true]
--sort-fields Sort on fields [boolean] [default: true]
--write Overrides contents of the SDL document.
[boolean] [default: false]$ # Prints formatted schema.
$ format-graphql ./schema.graphql
$
$ # Overrides target schema.
$ format-graphql --write=true ./schema.graphql```
### Node API
`formatSdl(schema, options)`
Returns a formatted GraphQL SDL String.
#### Parameters
- `schema`: string
- `options` (optional): object:```
{
sortDefinitions?: boolean,
sortEnums?: boolean,
sortFields?: boolean,
sortArguments?: boolean,
}
```#### Example
```js
import {formatSdl} from 'format-graphql';formatGraphql('type Foo { bar: String }');
```### Hooks
I recommend using [husky](https://www.npmjs.com/package/husky) to setup a pre-commit hook that would format the schema, e.g.
```json
"husky": {
"hooks": {
"pre-commit": "format-graphql --write true src/schema.graphql"
}
},```