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

  • cd app -cd到gutfile.js和package.json驻留
  • cwd/app/
  • npm install -安装依赖项
  • gulp -运行gulp

  • 在功能上,exeq完全可以实现我想要的功能。它依次执行这三个命令并成功执行。我的问题是exeq不会保留彩色输出,因此npm installgulp的日志是纯白色文本,因此很难解析。

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

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

    最佳答案

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

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

  • supports-colors uses称为 has-flag 的模块,用于查找process.argv条目(例如--color--colors等)以强制提供基本(16)颜色支持。您还可以使用--color=256强制使用256种颜色,使用--color=full这样的参数强制使用真彩色模式(1600万种颜色)。因此,举例来说,您应该像gulp --colors这样调用gulp以获得基本的颜色输出。
  • supports-colors也称为checks的环境变量 FORCE_COLOR ,如果检测到不支持任何颜色,则将强制支持基本颜色。

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

    关于node.js - Node.js中的子进程是否可以保留彩色输出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31620298/

    10-10 00:40
    查看更多