GraphQL Tag Pluck
@graphql-toolkit/graphql-tag-pluck
will take JavaScript code as an input and will pluck all template literals provided to graphql-tag
.
Input:
import gql from 'graphql-tag';
const fragment = gql`
fragment Foo on FooType {
id
}
`;
const doc = gql`
query foo {
foo {
...Foo
}
}
${fragment}
`;
Output:
fragment Foo on FooType {
id
}
query foo {
foo {
...Foo
}
}
Originally created because of https://graphql-code-generator.com/.
Usage
@graphql-toolkit/graphql-tag-pluck
is installable via NPM (or Yarn):
$ npm install @graphql-toolkit/graphql-tag-pluck
Once installed you can pluck GraphQL template literals using one of the following methods:
import gqlPluck, { gqlPluckFromFile, gqlPluckFromCodeString } from '@graphql-toolkit/graphql-tag-pluck';
gqlPluck.fromFile(filePath, {
useSync: true,
});
gqlPluck.fromFile.sync(filePath);
gqlPluck.fromCodeString(codeString, {
fileExt: '.ts',
});
Template literals leaded by magic comments will also be extracted :-)
`
enum MessageTypes {
text
media
draftjs
}
`;
supported file extensions are: .js
, .jsx
, .ts
, .tsx
, .flow
, .flow.js
, .flow.jsx
, .graphqls
, .graphql
, .gqls
, .gql
.
Options
I recommend you to look at the source code for a clearer understanding of the transformation options.
-
gqlMagicComment
The magic comment anchor to look for when parsing GraphQL strings. Defaults to graphql
, which may be translated into /* GraphQL */
in code.
-
globalGqlIdentifierName
Allows to use a global identifier instead of a module import.
export const usersQuery = graphql`
{
users {
id
name
}
}
`;
-
modules
An array of packages that are responsible for exporting the GraphQL string parser function. The following modules are supported by default:
{
modules: [
{
name: 'graphql-tag',
},
{
name: 'graphql-tag.macro',
},
{
name: 'gatsby',
identifier: 'graphql',
},
{
name: 'apollo-server-express',
identifier: 'gql',
},
{
name: 'apollo-server',
identifier: 'gql',
},
{
name: 'react-relay',
identifier: 'graphql',
},
{
name: 'apollo-boost',
identifier: 'gql',
},
{
name: 'apollo-server-koa',
identifier: 'gql',
},
{
name: 'apollo-server-hapi',
identifier: 'gql',
},
{
name: 'apollo-server-fastify',
identifier: 'gql',
},
{
name: ' apollo-server-lambda',
identifier: 'gql',
},
{
name: 'apollo-server-micro',
identifier: 'gql',
},
{
name: 'apollo-server-azure-functions',
identifier: 'gql',
},
{
name: 'apollo-server-cloud-functions',
identifier: 'gql',
},
{
name: 'apollo-server-cloudflare',
identifier: 'gql',
},
];
}
License
MIT