定义一个babelRelayPlugin.js(在验证客户端graphql查询时由webpack运行)如下:
var babelRelayPlugin = require('babel-relay-plugin');
var introspectionQuery = require('graphql/utilities').introspectionQuery;
var request = require('sync-request');
var url = 'http://localhost:3000/graphql';
var response = request('POST', url, {
qs: {
query: introspectionQuery
}
});
var schema = JSON.parse(response.body.toString('utf-8'));
module.exports = babelRelayPlugin(schema.data, {
abortOnError: true,
});
Run Code Online (Sandbox Code Playgroud)
当然,将url变量更改为用于开发的任何服务器URL.在webpack中,在加载器定义中包含以下内容:
query: {stage: 0, plugins: ['./babelRelayPlugin']}
Run Code Online (Sandbox Code Playgroud)
并指向上面babelRelayPlugin.js文件的位置.
看起来我们需要这样的东西(来自https://github.com/facebook/relay/blob/master/scripts/jest/updateSchema.js#L25):
import { buildASTSchema, introspectionQuery } from 'graphql/utilities';
var body = fs.readFileSync(inFile, 'utf8');
var ast = parseSchemaIntoAST(body);
var astSchema = buildASTSchema(ast, 'Root', 'Mutation');
graphql(astSchema, introspectionQuery).then(
function(result) {
var out = JSON.stringify(result, null, 2);
fs.writeFileSync(outFile, out);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2391 次 |
| 最近记录: |