Generate
cli

Generate the client

From http endpoint with --endpoint

gqlts --endpoint https://countries.trevorblades.com --output ./generated

You can fetch using get passing the --get flag

gqlts --get --endpoint https://countries.trevorblades.com --output ./generated

From local schema with --schema

gqlts --schema ./schema.graphql --output ./generated

Passing headers with -H

gqlts -H 'Authorization: Bearer myToken' -e https://countries.trevorblades.com -o ./generated

Only generate ES modules with --esm

If you are using nodejs you probably don't care about this flag

By default gqlts generates commonjs code that use require and module.exports to handle imports and exports

If you are compiling your code trough a bundler like webpack you can add the --esm flag to generate ES modules exports and imports, this way when you do import { createClient } from './generated' you are actually importing from an es module

Using ES modules has the advantage of smaller bundle size via tree shaking.

gqlts --esm --schema ./schema.graphql --output ./generated

Generate both commonjs and ESM with --esm-and-cjs

If you publish a package with gqlts code you probably want to include both ESM and CJS code for users using browser and nodes respectively

To do that pass the --esm-and-cjs flag

gqlts --esm-and-cjs --schema ./schema.graphql --output ./generated

Changing scalar types with -S

This is useful if you want to map from a custom scalar to a type like string, number, etc.

By default custom scalars have type any

gqlts -S MyScalar:string -S AnotherScalar:number -e https://countries.trevorblades.com -o ./generated

Sort generated code with --sort

If you see a lot of diffs between one generation and another you can use the --sort flag to sort object properties

The order of generated object properties is taken from the schema introspection by default, so you shouldn't need this flag if using popular frameworks like Apollo server

gqlts --sort -e https://countries.trevorblades.com -o ./generated