在Node.js中获取终端宽度

65
console.log(process.env.COLUMNS)

返回undefined,尽管,

$ echo $COLUMNS

输出结果如预期:

78

我一直在尝试像这样运行Node env node myprog.js,仍然是undefined。是我做错了还是有其他方法可以知道终端的宽度?(为了漂亮地格式化某些输出数据)。


当我尝试使用 console.log(process.env) 时,输出与 printenv 相同,但由于某种原因 $COLUMNS 不在 printenv 的输出中。 - Paulo Oliveira
1个回答

108
console.log('Terminal size: ' + process.stdout.columns + 'x' + process.stdout.rows);

输出看起来像 "终端大小:80x24"。 如果控制台大小发生更改,还会触发事件。

在文档中的tty下有解释。


5
我认为应该使用(process.stdout.columns || defaultColumns),因为stdout.columns可能是undefined - Slava Fomin II
使用"-".repeat(process.stdout.columns)在终端上创建一条横线。 - Zei
为考虑到开头和结尾的字符 ',请使用"-".repeat(process.stdout.columns - 2)。 - Coty Embry
1
请注意@SlavaFominII的备注!我在生产环境中遇到了代码失败的情况,因为容器中的process.stdout.columns未定义。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接