パッケージの詳細

webpack-plugin-graphql-schema-hot

nodkz936MIT0.0.10

Webpack plugin which track changes in your schema files and generate json and txt files.

graphql, schema, regenerate, webpack

readme

webpack-plugin-graphql-schema-hot

NPM version npm

This is Webpack plugin which tracks changes in your GraphQL Schema files and re/generates schema introspection in json and txt formats. Just provide absolute path to your schema js and paths for output files in plugin options. And for every webpack rebuild plugin will check if changed files somehow related to schema and if so, will emmit new json and txt files. After that this files may be provided to eslint, babel or any other tool. Links to recommended tools can be found below.

screen shot 2017-01-30 14 52 29

Install

yarn add webpack-plugin-graphql-schema-hot --dev

or

npm install webpack-plugin-graphql-schema-hot --save-dev

Usage with webpack.config.js

import path from 'path';
import WebpackPluginGraphqlSchemaHot from 'webpack-plugin-graphql-schema-hot';

const config = {
  // ...
  plugins: [
    new WebpackPluginGraphqlSchemaHot({
      schemaPath: path.resolve(__dirname, '../schema/index.js'),
      output: {
        json: path.resolve(__dirname, '../build/schema.graphql.json'),
        txt: path.resolve(__dirname, '../build/schema.graphql.txt'),
      },
      // output: (schemaPath) => {
      //   cp.execSync(
      //     'npm run generate-schema',
      //     { cwd: path.resolve(__dirname, '../'), stdio: [0, 1, 2] }
      //   );
      // },
      runOnStart: true, // default: false
      waitOnStart: 0, // default: 0, set 2000 if you use babel-plugin-transform-relay-hot
      waitOnRebuild: 0, // default: 0, set 2000 if you use babel-plugin-transform-relay-hot
      verbose: true, // default: false
      hideErrors: false, // default: false
      excludes: ['**/__generated__/**'], // default: null
    }),
  ]
}

Options

  • schemaPath
    • Required
    • Type: String
    • Absolute path to your graphql schema js file. Only this file and its dependencies will trigger generation of new files.
  • output
    • Required
    • Type: Function or Object
    • If Object:
      • You should provide json and/or txt properties with the absolute file path.
    • If Function:
      • This function may be async (in this case function should return Promise)
      • (schemaPath) => { /* you generation code */ }. Sometimes you may want to generate schema in some exotic way, eg. under another babel environment. Just provide your function, which will be called instead of internal.
  • runOnStart
    • Type: Boolean
    • Default: false
    • Generate schema files on start, before Webpack starts to compile your files.
  • waitOnStart
    • Type: Integer
    • Default: 0
    • How many milliseconds wait after generating schema files on start, before Webpack proceed. If you use Relay, install babel-plugin-transform-relay-hot and set 2000, that allows to reload relayBabelPlugin with new schema before Webpack proceed.
  • waitOnRebuild
    • Type: Integer
    • Default: 0
    • How many milliseconds wait after generating schema files on rebuild, before Webpack proceed.
  • verbose
    • Type: Boolean
    • Default: false
    • Show more details
  • hideErrors
    • Type: Boolean
    • Default: false
    • Hide runtime plugin errors. If you provide wrong options to plugin, it will show startup errors even hideErrors=true.
    • excludes
      • Type: Array of globs
      • Default: null
      • Do not track changes in files which globs match filename. You should provide glob for absolute path, eg. **/temp/**, just temp or temp/ won't match all files inside the directory.

Recommended tools

License

MIT

更新履歴

master

0.0.10 (May 28, 2018)

  • fix: for Webpack 4 use new API on .hooks

0.0.9 (May 28, 2018)

  • fix: skip compilations for mini-css-extract-plugin (Webpack 4)

0.0.5 (January 30, 2017)

  • fix: Promise.resolve with opts.output as function

0.0.4 (January 30, 2017)

  • feat: opts.output now may be async function which returns Promise
  • fix: opts.output does not unfreeze Webpack

0.0.3 (January 30, 2017)

  • feat: Add log messages when freezing Webpack

0.0.2 (January 28, 2017)

  • fix: Proceed Webpack if was thrown error on schema generation

0.0.1 (January 28, 2017)

  • First commit