This plugin helps you run the apollo-tooling module using webpack without having to wire them together in a single process or running the two processes manually. It also handles the extraction of a schema file for you to be used in apollo-cache's IntrospectionFragmentMatcher for instance. It does this by attaching into webpack compilation hooks.
- Extract schema file from endpoint
- Do an initial codegen based on that schema.json on all the files that you target with the
included
option
- Generate types based on the schema.json for changed files that match the
included
option
npm i -D apollo-codegen-webpack-plugin
Or when using yarn:
yarn add -D apollo-codegen-webpack-plugin
// in your webpack.config.js
const ApolloCodegenWebpackPlugin = require('apollo-codegen-webpack-plugin');
module.exports = {
// ... your config
plugins: [
// ... your other plugins
new ApolloCodegenWebpackPlugin({
// ... your options
}),
],
}
This plugin passes your provided options in apollo:codegen. For a list of supported options, see: https://github.com/apollographql/apollo-tooling#apollo-clientcodegen-output
Note: the [OUTPUT] positional is supported by passing an 'output' option to this plugin
Note: the localSchemaFile option is also used to determine where to place the generated schema file.
Note: valueless flags can be used by giving them a value of true. examples: "addTypename: true", "outputFlat: true"
A additional options are also supported, these are:
Type: Boolean
- Default: false
When this option is set to true, the plugin will exit with exit code 1 when an error occurs when generating the types or downloading the schema. This is useful when you want to use this plugin to also check your queries on a production build.
Type: String
This option maps to the service:download
option.
You may end up with some errors in your console about running multiple installations of graphql
. To fix this with yarn, you can stick this in your package.json:
"resolutions": {
"graphql": // your desired version
}
To fix this with npm, you can look at an equivalent like: https://github.com/rogeriochaves/npm-force-resolutions