是否有獨立的工具將模塊化graphql模式轉換爲json模式?無需啓動服務器即可生成json模式?
我有一個使用apollo-graphql和graphql-tools makeExecutableSchema
的graphql服務器。它描述如下here
// schema.js
import { makeExecutableSchema } form 'graphql-tools';
const Author = `type Author { ... }`;
const Post = `type Post { ... }`;
const Query = `type Query { ... }`;
export const typeDefs = [Author, Post, Query];
export const schema = makeExecutableSchema({
typeDefs: typeDefs,
resolvers: { ... },
});
如何創建一個schema.json
形式要麼typeDefs
或schema
的格局?
我需要一個JSON模式使用relay-compiler
或apollo-codegen
。 apollo-codegen
包括這個腳本從graphql服務器創建一個模式...
apollo-codegen introspect-schema http://localhost:8080/graphql --output schema.json
...但我想創建模式和運行阿波羅代碼生成,在一個自動構建。我不想創建一個服務器。
我想提出這樣一個答案,但問題已被標記題外話¯\ _(ツ)_ /¯
從@丹尼爾 - 里爾登答案指出我在正確的方向。 makeExecutableSchema
返回GraphQLSchema
,因此可以使用graphql
的printSchema
和introspectionQuery
來獲取架構的json或graphql語言表示。
// export.js
import { schema } from './schema.js'
import { graphql, introspectionQuery, printSchema } from 'graphql';
// Save json schema
graphql(schema, introspectionQuery).then(result => {
fs.writeFileSync(
`${yourSchemaPath}.json`,
JSON.stringify(result, null, 2)
);
});
// Save user readable type system shorthand of schema
fs.writeFileSync(
`${yourSchemaPath}.graphql`,
printSchema(schema)
);
好吧,它看起來像'makeExecutableSchema'返回一個GraphQLSchema。你的例子來自[relaydocs](https://facebook.github.io/relay/docs/guides-babel-plugin.html#schema-json)例子可能會起作用。 – everett1992