已知问题
输出被截断
这是 console.log()
的一个已知问题 (参见 nodejs/node#6379)。 这是由 console.log()
写入终端与写入文件时的不同行为引起的。 如果进程调用 process.exit()
,缓冲的输出将被截断。 为防止这种情况,进程应使用 process.exitCode = 1
并等待进程自行退出。 或者使用类似 exit 包。
解决方法是写入临时文件
js
const tmp = await $`mktemp` // Creates a temp file.
const {stdout} = await $`cmd > ${tmp}; cat ${tmp}`
子进程中的颜色
您可能会看到用 await $
调用的工具不显示颜色,与您在终端中看到的不同。 这是因为子进程不认为它是一个 TTY,子进程关闭了颜色。 通常有一种方法可以强制子进程添加颜色。
js
process.env.FORCE_COLOR='1'
await $`cmd`