如何通过stdin以编程方式将变量传递给cli命令?

时间:2018-08-25 17:27:59

标签: node.js command-line-interface graphql

我正在使用graphql-schema-linter包来验证GraphQL模式。

我想知道是否可以通过将像这样的类型定义传递给stdin来以编程方式执行验证...

const { exec } = require('child_process');

const typeDefs = require('./type-defs');
exec(`graphql-schema-linter --stdin "${typeDefs}"`, (err, stdout, stderr) => {
    if (err) console.log('ERROR: ', err);
    if (stdout) console.log('STDOUT: ', stdout);
    if (stderr) console.log('STDERR: ', stderr);    
});

const server = new ApolloServer({
    typeDefs
});

以下代码会产生错误,因为我不太确定如何以正确的方式通过stdin传递类型defs

1 个答案:

答案 0 :(得分:0)

好吧,经过一番挖掘,我找到了解决方案。原来我不得不使用spawnSync来接受标准输入作为输入

const command = spawnSync('graphql-schema-linter', ['-s'], { input: typeDefs, encoding: 'utf-8' });