如何在管道 node.js 进程中获取终端大小?

Mar*_*tin 5 javascript node.js intern

我正在使用 Grunt 来启动一个单元测试框架 (Intern),它最终会通过管道传输另一个 node.js 进程,然后我使用 Charm 将结果输出到屏幕。我必须从 Grunt 配置选项传递终端大小信息​​,但这有点混乱,我想尝试从管道进程中获取终端大小,但标准 process.stdout.cols/getWindowSize根本不可用,因为管道进程没有注册为 TTY(尽管 Charm 可以正常工作)。

有什么建议?

编辑只是在这里要清楚...... Grunt JavaScript 文件正在主 node.js 进程中运行,但我试图从中检索此信息的文件(以及我因此运行人们建议的命令的位置)位于产生的子进程。

Ana*_*ina 3

试试这些:

  • tput cols告诉您列数。
  • tput lines告诉你行数。
  • echo -e "lines\ncols"|tput -S获取行和列

stty,来自coreutils

$ stty size #60 120 <= sample output

在终端中运行以下代码时会打印列:

var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("tput cols", puts);
Run Code Online (Sandbox Code Playgroud)