【问题标题】:How to use Cspell --file-list stdin如何使用 Cspell --file-list 标准输入
【发布时间】:2022-01-20 17:11:40
【问题描述】:

我想在 Node Js 中使用 cspell --file-list 命令作为子进程。 我想将大量字符串传递给这个子进程并通过标准输入提供它。

var child = spawn('cspell --file-list',[], {shell:true});

现在我想将字符串一个一个地传递给这个子进程。

有人可以通过小例子帮助我吗?

【问题讨论】:

    标签: javascript node.js arrays spawn


    【解决方案1】:

    将文件作为参数发送:

    const spawn = require('child_process').spawn;
    
    const cmd = 'cspell';
    
    const checkFiles = (files) => {
    
        const proc = spawn(cmd, ['--file-list'].concat(files), {shell: true });
    
        const buffers = [];
    
        proc.stdout.on('data', (chunk) => buffers.push(chunk));
    
        proc.stderr.on('data', (data) => {
            console.error(`stderr: ${data.toString()}`);
        });
    
        proc.stdout.on('end', () => {
            const result = (Buffer.concat(buffers)).toString();
            console.log(`done, result:\n${result}`);
    
        });
    
    };
    
    // pass files array
    checkFiles(['some-file', 'another-file']);
    

    【讨论】:

    • 问题是如果我有 100 个文件,那么它会调用 spawn 100 次。我需要使用“cspell --file-list stdin”一次传递所有 100 个文件
    • 你说的是一个字符串...检查更新的代码
    • 我不确定它为什么调用 proc.stderr.on('data', (data) => { console.error(stderr: ${data.toString()}); });而不是 proc.stdout.on('data', (chunk) => buffers.push(chunk));即使应用程序以代码 0 退出。
    • 这可能是cspell抛出了一些错误,这就是为什么它在stderr
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2022-07-10
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    相关资源
    最近更新 更多