$ npm install fake-tag
A fake template literal tag to trick syntax highlighters, linters and formatters into action. Interpolations and escapes are tested.
For Node.js, to install fake-tag
with npm, run:
npm install fake-tag
For Deno and browsers, an example import map:
{
"imports": {
"fake-tag": "https://unpkg.com/fake-tag@5.0.0/fakeTag.mjs"
}
}
Then, import and use the template literal tag fakeTag
.
Tagging a GraphQL SDL string with gql
:
import gql from "fake-tag";
const typeDefs = gql`
"A foo."
type Foo {
"The \`Foo\` ID."
id: ID!
}
`;
Supported runtime environments:
^14.17.0 || ^16.0.0 || >= 18.0.0
.> 0.5%, not OperaMini all, not dead
.Non Deno projects must configure TypeScript to use types from the ECMAScript modules that have a // @ts-check
comment:
compilerOptions.allowJs
should be true
.compilerOptions.maxNodeModuleJsDepth
should be reasonably large, e.g. 10
.compilerOptions.module
should be "node16"
or "nodenext"
.The npm package fake-tag
features optimal JavaScript module design. These ECMAScript modules are exported via the package.json
field exports
:
A comment tag looks like this:
const QUERY = /* GraphQL */ `
{
foo
}
`;
They are far superior to a fake tag:
Unfortunately not all tools support them yet. prettier
has since v1.13.0, but eslint-plugin-graphql
at v3.1.0 still doesn’t.
String.raw
?This may be temptingly simple:
const gql = String.raw;
const QUERY = gql`
{
foo
}
`;
However, it doesn’t unescape characters. For the usage example, if you console.log(typeDefs)
before and after replacing the import with const gql = String.raw
you will see the difference in the type description markdown:
"A foo."
type Foo {
- "The `Foo` ID."
+ "The \`Foo\` ID."
id: ID!
}
© 2010 - cnpmjs.org x YWFE | Home | YWFE