我正在运行 Jest,输出如下:打印一行(用于测试),然后擦除它,然后打印另一行。
但是,如果我使用循环来执行测试(使用expect
),则无法查看完整的测试列表。 (选择器等)。
我也尝试过:
jest foo.js &> result.txt
但看来笑话可以确定它不是终端类型,因此不会再输出这些行。
我还研究了选项jest
,但没有找到任何可行的方法。
所以我认为一个黑客可以是:如果终端没有这些 ANSI 转义序列支持(擦除一行等)怎么办,那么输出必须是一行又一行。
有办法做到吗?环境是 macOS Sonoma 上的终端。
答案1
只需告诉您的终端不支持此类功能,例如将
TERM=vanilla jest foo.js
或者在脚本开头设置环境变量(请记住export
:所有子进程都需要使用该环境变量)。看https://invisible-island.net/ncurses/terminfo.ti.html有关各种终端的描述。
一个好的程序会检查终端,并仅在终端支持时才添加转义码。不幸的是(正如您在这个 stackoverflow 站点中看到的许多答案),许多程序员很懒,无论如何都会发送转义代码,而不查询终端功能。
注意:还有一些实用程序可以删除 ansi 序列,但我不记得名称了。