如何以规范格式记录ng命令的输出内容?
解决Angular CLI命令日志中ANSI控制码乱码的问题
你遇到的[33m、[ESC]这类内容其实是ANSI颜色控制转义码——终端用这些代码来给输出添加颜色高亮,但当你把输出重定向到日志文件时,这些控制码会被直接写入文件,导致文本编辑器里显示乱码。下面给你几个实用的解决办法:
方法1:直接禁用Angular CLI的颜色输出
这是最省心的方案,直接让CLI输出不带颜色控制码:
- 执行命令时添加
--no-color参数:ng build --prod --no-color > build.log ng test --no-color > test.log - 如果不想每次都加参数,可以临时设置环境变量:
- 在CMD里:
set NG_CLI_ANSI_COLORS=false - 在PowerShell里:
$env:NG_CLI_ANSI_COLORS="false"
设置完后,当前会话里的所有ng命令都会默认禁用颜色输出。
- 在CMD里:
方法2:过滤已生成输出中的转义码
如果已经有带乱码的日志,或者你需要保留终端颜色但同时生成干净的日志,可以用命令过滤掉ANSI控制码:
- PowerShell里可以直接用正则替换:
ng build --prod | ForEach-Object { $_ -replace '\x1b\[[0-9;]*m', '' } > build.log - CMD里可以借助第三方工具(比如
ansifilter),不过相比之下还是方法1更简便。
方法3:配置Karma禁用颜色(针对ng test)
如果是ng test的Karma输出带乱码,还可以直接修改Karma的配置文件karma.conf.js,找到colors选项并设为false:
module.exports = function(config) { config.set({ // 其他配置项... colors: false, // 其他配置项... }); };
这样Karma的测试输出就不会包含颜色控制码了。
内容的提问来源于stack exchange,提问作者srikanth peetha
相关产品推荐
相关产品推荐

