You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elixir CLI工具经mix escript.build编译后ANSI彩色输出失效问题

问题根因

Elixir的IO.ANSI.format函数会根据IO.ANSI.enabled?的返回值决定是否保留颜色转义码:

  • iex启动时会自动检测终端兼容性,默认开启ANSI支持,所以彩色输出正常
  • escript构建后的程序启动时不会自动执行ANSI检测,默认IO.ANSI.enabled?返回false,所有颜色码会被IO.ANSI.format直接过滤,导致输出无颜色
解决方法

分两种场景按需选择:

  • 强制开启彩色输出(适合确定运行环境终端都支持ANSI的场景)
    在你的CLI入口函数最顶部添加一行代码即可:
    IO.ANSI.enabled?(true)
    
  • 兼容不同终端场景(符合通用CLI规范)
    可结合环境变量和终端检测动态判断是否开启颜色,遵守行业通用的NO_COLOR规范:
    # 入口函数开头添加
    ansi_support = 
      is_nil(System.get_env("NO_COLOR")) 
      && IO.ANSI.terminal?()
    
    IO.ANSI.enabled?(ansi_support)
    
    还可扩展支持--color/--no-color启动参数,让用户手动控制颜色开关。

注意:不要把ANSI启用配置写在config/config.exs中,escript构建时不会打包运行时配置,写在配置文件的相关设置不会生效。

内容的提问来源于stack exchange,提问作者RiqueW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:54:00