当前位置: 首页 > 面试题库 >

Node.js中的子进程是否可以保留彩色输出?

席俊驰
2023-03-14
问题内容

我正在使用Liftoff编写我的第一个Node.js命令行工具。我的应用程序中的重要步骤之一是将一些文件和文件夹复制到用户的cwd中。我正在使用exeq完成此操作。它运行一系列命令:

  • cd appcwd/app/-cd 到gulpfile.js和package.json所在的位置
  • npm install -安装依赖项
  • gulp -喝一口

在功能上,exeq完全可以实现我想要的功能。它依次执行这三个命令并成功执行。我的问题是exeq不保留彩色输出,所以从日志中npm installgulp是纯白色的文字,使他们非常难以解析。

到目前为止,我的研究还没有找到能够完成这项工作的替代节点程序包,也没有一种使用当前设置来保留彩色输出的清晰方法。我确实从某人那里得到了线索,这可能是环境问题,并且我需要一种方法来告诉exeq它在支持彩色输出的环境中。不幸的是,exeq似乎没有任何选项或参数,所以我不知道如何去做。

这是节点子进程的限制,还是有办法保留彩色输出?


问题答案:

因此gulp,例如使用一个称为chalk日志记录格式化输出的模块。chalk依次使用称为的模块supports- color进行实际的终端类型检测。当chalkrequire()d时,它将自动用于supports-color确定可用的颜色。

通常,supports-color当使用默认stdio选项将进程作为子进程执行时,将报告没有颜色可用,因为在这种情况下stdout 不是
tty,因此它是管道。不过,幸运的是,supports-colors提供了两个选项来覆盖该检查:

  • supports-colors 使用一种称为模块has-flag,寻找process.argv喜欢的条目--color--colors等给力的基本(16),颜色支持。您还--color=256可以强制使用256种颜色,并使用参数--color=full强制使用真彩色模式(1600万种颜色)。因此,例如,您应该调用gulp gulp --colors以获得基本的颜色输出。

  • supports-colors还检查是否有一个名为的环境变量FORCE_COLOR,如果检测到不支持任何颜色,它将强制支持基本颜色。

对于npm,您可以通过两种不同的方式强制输出颜色。追加--color always命令行参数或NPM_CONFIG_COLOR=always在环境中设置(您可以通过设置env传递给child_process.exec()/
的选项来实现child_process.spawn())。



 类似资料:
  • 问题内容: 我特别想知道PostgreSQL。给出以下人为的示例: 从外部查询返回的名称是否保证与内部查询的顺序相同? 问题答案: 不,在外部查询中按以下顺序排序: 内部(子)查询返回结果集。如果按此顺序进行排序,则保证从内部(子)查询传递到外部查询的中间结果集将按照您指定的方式进行排序,但是在外部查询中不对结果进行排序通过处理内部查询结果集生成的结果集,不能保证以任何方式进行排序。

  • 本文向大家介绍Node.js中console.log()输出彩色字体的方法示例,包括了Node.js中console.log()输出彩色字体的方法示例的使用技巧和注意事项,需要的朋友参考一下 1. 代码样例 2. 输出结果 3. 解释 不难发现样例中的关键的代码是类似 \033[42;30m 这种格式的,换成大白话的写法就是 \033[背景色编号;字色编号m 。 字色编号:30黑,31红,32绿,

  • 问题内容: 我正在使用集成从Python 2.7驱动MS Excel。我注意到一个奇怪的事情:当我运行以下代码时: 的过程中出现的过程列表(视图中使用Windows任务管理器或上)按预期方式。然后,我会做所有我不需要做的事情。但是,当我关闭Excel时: 即使我关闭了启动它的Python解释器,该过程仍然会持续(这种情况很有意义,因为Excel在不同的过程中运行,但可以肯定)。我发现终止此过程的唯

  • Hy,我有一个webapplication,我试图在其中集成JPA2(Hibernate)+Spring+Flyway 我将flyway添加到我的ApplicationContext中,如下所示: 有什么想法吗?

  • 我使用supervisord作为Docker容器的入口点,如https://docs.Docker.com/articles/using_supervisord/中所述,我希望所有日志都写入stdout,这样我就可以利用内置工具,如或systemd的日志,特别是在CoreOS上运行容器时。 对于stderr,子进程有选项,是否可以以某种方式将子进程stdout重定向回supervisord,而不处

  • MainActivity.class MainActivity中的