【问题标题】:Node Spawn preserve color节点生成保留颜色
【发布时间】:2020-04-08 18:06:18
【问题描述】:

我有以下脚本:

const child = spawn('log-processor', [], {shell: true});
child.stdout.pipe(process.stdout);
child.stdin.setDefaultEncoding('utf-8');

const write = (line) => {
  child.stdin.write(`${line}\n');
}

通常,使用echo '...' | log-processor 会以颜色打印日志。但是,使用上面的脚本,颜色不会被保留。

如何保留log-processor 创建的日志颜色?

【问题讨论】:

  • 反引号是否逃逸了颜色?你需要它们吗?
  • write(line + '\n') 也没有颜色。 line 这里只是一个普通字符串。它没有颜色。 log-processor 输出是字符串化的,我假设我发生在 pipe(process.stdout); 上的颜色丢失

标签: javascript node.js spawn


【解决方案1】:

您没有任何颜色,因为您尝试执行的命令与大多数 CLI 一样,当它们不在 TTY 环境中运行时不会输出任何颜色。
为了获得更真实的输出,您需要创建一个伪终端 (PTY)。可悲的是,这在节点上是不可能的。 我被这个问题困住了,不想使用node-pty,安装起来很麻烦(node-gyp噩梦)所以I made this
这会解决你的问题,加油!

【讨论】:

    猜你喜欢
    • 2013-09-20
    • 2023-03-12
    • 2019-10-31
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    相关资源
    最近更新 更多