@graphql-ez/plugin-codegen
TypeScript icon, indicating that this package has built-in type declarations

0.8.1 • Public • Published

@graphql-ez/plugin-codegen

Integration with GraphQL Code Generator

Usage

import { ezCodegen } from '@graphql-ez/plugin-codegen';

const ezApp = CreateApp({
  ez: {
    plugins: [
      ezCodegen({
        // Options
      }),
      // ...
    ],
  },
  // ...
});

Options

The config property extends the options of:

export interface CodegenConfig
  extends TypeScriptPluginConfig,
    TypeScriptResolversPluginConfig,
    TypeScriptDocumentsPluginConfig,
    TypeScriptTypedDocumentNodesConfig {
  /**
   * @description
   * Will use import type {} rather than import {} when importing only types.
   *
   * This gives also add compatibility with TypeScript's "importsNotUsedAsValues": "error" option
   *
   * @default true
   */
  useTypeImports?: boolean;

  /**
   * Enable deep partial type resolvers
   *
   * @default true
   */
  deepPartialResolvers?: boolean;

  /**
   * Generated target path
   *
   * @default "./src/ez.generated.ts"
   */
  targetPath?: string;

  /**
   * Add arbitrary code at the beginning of the generated code
   */
  preImportCode?: string;

  /**
   * Handle Code Generation errors
   * @default console.error
   */
  onError?: (err: unknown) => void;

  /**
   * Custom Code Generation finish callback
   */
  onFinish?: () => void;

  /**
   * GraphQL Codegen plugin context
   */
  pluginContext?: Record<string, any>;

  /**
   * Extra plugins map
   */
  extraPluginsMap?: Record<string, CodegenPlugin<any>>;

  /**
   * Extra plugins config
   */
  extraPluginsConfig?: Types.ConfiguredPlugin[];

  /**
   * Asynchronously loads executable documents (i.e. operations and fragments) from
   * the provided pointers. The pointers may be individual files or a glob pattern.
   * The files themselves may be `.graphql` files or `.js` and `.ts` (in which
   * case they will be parsed using graphql-tag-pluck).
   */
  documents?: UnnormalizedTypeDefPointer | UnnormalizedTypeDefPointer[];

  /**
   * Documents config
   */
  documentsConfig?: {
    /**
     * @default true
     */
    useTypedDocumentNode?: boolean;

    /**
     * Configuration used while loading the documents
     */
    loadDocuments?: Partial<LoadTypedefsOptions>;
  };

  /**
   * Skip documents validation
   */
  skipDocumentsValidation?: boolean;

  /**
   * Transform the generated code
   */
  transformGenerated?: (code: string) => string | Promise<string>;

  /**
   * Custom document loaders
   */
  documentsLoaders?: Loader<string, SingleFileOptions>[];
}

export interface CodegenOptions {
  /**
   * Enable code generation, by default is enabled if `NODE_ENV` is not `production` nor `test`
   *
   * @default process.env.NODE_ENV !== "production" && process.env.NODE_ENV !== "test"
   */
  enableCodegen?: boolean;

  /**
   * Add custom codegen config
   */
  config?: CodegenConfig;

  /**
   * Output schema target path or flag
   *
   * If `true`, defaults to `"./schema.gql"`
   * You have to specify a `.gql`, `.graphql` or `.json` extension
   *
   * @default false
   */
  outputSchema?: boolean | string | string[];
}

Dependents (6)

Package Sidebar

Install

npm i @graphql-ez/plugin-codegen

Weekly Downloads

32

Version

0.8.1

License

MIT

Unpacked Size

28.3 kB

Total Files

18

Last publish

Collaborators

  • pablosz