# @graphql-toolkit/graphql-tag-pluck

> Pluck graphql-tag template literals

Latest version **0.10.7** (published 2020-05-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install @graphql-toolkit/graphql-tag-pluck
pnpm add @graphql-toolkit/graphql-tag-pluck
yarn add @graphql-toolkit/graphql-tag-pluck
bun add @graphql-toolkit/graphql-tag-pluck
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.10.7 |
| Published | 2020-05-18 |
| First published | 2019-11-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 5 |
| Unpacked size | 92.3 KB |
| Known vulnerabilities | 0 (+2 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 166 |
| Maintainers | ardatan, dotansimha, urigo |

## Links

- npm: https://www.npmjs.com/package/@graphql-toolkit/graphql-tag-pluck
- Repository: https://github.com/ardatan/graphql-toolkit
- Homepage: https://github.com/ardatan/graphql-toolkit#readme
- Issues: https://github.com/ardatan/graphql-toolkit/issues
- npm.io page: https://npm.io/package/@graphql-toolkit/graphql-tag-pluck

## Dependencies (5)

- [@babel/types](https://npm.io/package/@babel/types.md) 7.9.6
- [@babel/parser](https://npm.io/package/@babel/parser.md) 7.9.6
- [@babel/traverse](https://npm.io/package/@babel/traverse.md) 7.9.6
- [vue-template-compiler](https://npm.io/package/vue-template-compiler.md) ^2.6.11
- [@graphql-toolkit/common](https://npm.io/package/@graphql-toolkit/common.md) 0.10.7

## Recent versions

- 0.10.7 (latest) — 2020-05-18
- 0.10.8-alpha-ac0aac7.0 (canary) — 2020-05-18
- 0.10.7-alpha-22eaff9.21 — 2020-05-18
- 0.10.7-alpha-195e2d1.13 — 2020-05-05
- 0.10.7-alpha-3d2aa9a.0 — 2020-04-29
- 0.10.7-alpha-00894dc.0 — 2020-04-29
- 0.10.6 — 2020-04-29
- 0.10.6-alpha-14aa73a.6 — 2020-04-29
- 0.10.6-alpha-95e7408.5 — 2020-04-29
- 0.10.6-alpha-2f9f790.5 — 2020-04-29
- 0.10.6-alpha-3d1355e.0 — 2020-04-24
- 0.10.5 — 2020-04-24
- 0.10.5-alpha-c95fb23.11 — 2020-04-24
- 0.10.5-alpha-7c19cfe.11 — 2020-04-23
- 0.10.5-alpha-d943f3a.11 — 2020-04-23
- … 578 more at https://npm.io/package/@graphql-toolkit/graphql-tag-pluck/versions

## README

## 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:**

```js
import gql from 'graphql-tag';

const fragment = gql`
  fragment Foo on FooType {
    id
  }
`;

const doc = gql`
  query foo {
    foo {
      ...Foo
    }
  }

  ${fragment}
`;
```

**Output:**

```graphql
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:

```js
import gqlPluck, { gqlPluckFromFile, gqlPluckFromCodeString } from '@graphql-toolkit/graphql-tag-pluck';

// Returns promise
gqlPluck.fromFile(filePath, {
  useSync: true, // Optional, will return string if so
});

// Returns string
gqlPluck.fromFile.sync(filePath);

// Returns string
gqlPluck.fromCodeString(codeString, {
  fileExt: '.ts', // Optional, defaults to '.js'
});
```

Template literals leaded by magic comments will also be extracted :-)

```js
/* GraphQL */ `
  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](src/visitor.js) 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.

  ```js
  // `graphql` is a global function
  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:

  ```js
  {
    modules: [
      {
        // import gql from 'graphql-tag'
        name: 'graphql-tag',
      },
      {
        name: 'graphql-tag.macro',
      },
      {
        // import { graphql } from 'gatsby'
        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

---
_Source: https://npm.io/package/@graphql-toolkit/graphql-tag-pluck · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
