带有Node的.gql或.graphql文件类型

Tyl*_*dge 14 babel node.js express graphql

我正在使用graphql-server-express带有Node的Apollo ,我想将我的"typedef"模式定义文件转换为.graphql or .gql文件,以便清晰和语法突出显示.

做这个的最好方式是什么?我在巴贝尔(?)之外找不到任何好的资源,这似乎是唯一的选择.

非常感谢你的帮助!

rob*_*cat 10

我敢肯定,到目前为止,您已经找到了解决方案,但是对于其他人来说,这可能会有所帮助 https://github.com/prismagraphql/graphql-import

用法

import { importSchema } from 'graphql-import'
import { makeExecutableSchema } from 'graphql-tools'

const typeDefs = importSchema('schema.graphql')
const resolvers = {}

const schema = makeExecutableSchema({ typeDefs, resolvers })
Run Code Online (Sandbox Code Playgroud)

例子

导入特定字段

假定以下目录结构:

.
??? a.graphql
??? b.graphql
??? c.graphql
Run Code Online (Sandbox Code Playgroud)

图文

# import B from "b.graphql"

type A {
  # test 1
  first: String
  second: Float
  b: B
}
Run Code Online (Sandbox Code Playgroud)

b.graphql

# import C from 'c.graphql'

type B {
  c: C
  hello: String!
}
Run Code Online (Sandbox Code Playgroud)

图形库

type C {
  id: ID!
}
Run Code Online (Sandbox Code Playgroud)

  • 欢迎提供解决方案的链接,但请确保您的答案在没有它的情况下有用:[在链接周围添加上下文](https://meta.stackexchange.com/a/8259) 这样您的其他用户就会知道它是什么是以及为什么它在那里,然后引用您链接到的页面中最相关的部分,以防目标页面不可用。仅是链接的答案可能会被删除。 (3认同)
  • 套餐好像已经停产了 (2认同)

Ant*_*lik 6

有同样的问题如何以正确的方式实施它。无论如何这对我有用。

import {gql} from 'apollo-server-express'
import * as types from './types.graphql'

export const typeDefs = gql`${types}`
Run Code Online (Sandbox Code Playgroud)


小智 6

schemas 文件夹应该包含带有 .graphql 或 .gql 文件的文件

const path = require('path');
const { loadFilesSync } = require('@graphql-tools/load-files');
const { mergeTypeDefs } = require('@graphql-tools/merge');

const typesArray = loadFilesSync(path.join(__dirname, './schemas'));

module.exports = mergeTypeDefs(typesArray, { all: true });
Run Code Online (Sandbox Code Playgroud)


Efo*_*osa -1

我有同样的问题,我相信在不将 babel/webpack 引入服务器端管道的情况下完成您所要求的唯一方法是将您的查询编写为导出的模板字符串。

例如

/* query.gql */
module.exports = `
schema {
  query: Query
  mutation: Mutation
}

type Query {
  posts: [Post]
  post(id:String, slug:String): Post
  user(uid:String): User
}
...
`
Run Code Online (Sandbox Code Playgroud)

值得庆幸的是,GraphQL 的 VS Code 语法突出显示支持此方法。