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

时间:2015-09-03 10:51:46

标签: javascript node.js intern

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

有什么建议吗?

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

2 个答案:

答案 0 :(得分:1)

试试这些:

  • class SomeCompilerGeneratedType { public Foo obj; public void SomeCompilerGeneratedMethod() { Console.WriteLine(obj.name); } } 告诉您列数。
  • tput cols告诉您行数。
  • tput lines获取行和列

来自sttycoreutils

echo -e "lines\ncols"|tput -S

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

$ stty size #60 120 <= sample output

答案 1 :(得分:0)

pty.js模块可以让孩子像普通终端一样行事。

var pty = require('pty.js');

var term = pty.spawn('bash', [], {
  name: 'xterm-color',
  cwd: process.env.HOME,
  env: process.env
});

term.on('data', function(data) {
  console.log(data);
});

term.write('ls\r');
term.resize(100, 40);
term.write('ls /\r');

console.log(term.process);