该线程(问题捕获错误输出)让您了解我正在努力解决的问题。我正在尝试从 MSBuild 运行 grunt,并且 grunt 错误未显示在 Visual Studio 输出窗口中。我在 Visual Studio Express 2012 for Web 中有一个 .NET 项目。我已经使用 IMPORT 标记将一个外部项目导入到项目构建文件中,并且在导入的项目中我有一个 Exec 任务试图运行 grunt。我显然希望在我的 Visual Studio 输出窗口中看到 grunt 输出的错误消息,而不必大惊小怪。我找到了一个非常简单的解决方法,至少将输出发送到文本文件。
grunt.cmd > grunt-output.txt
此输出文件位于我的 .NET 项目文件夹中的某个位置,因此快速刷新并双击允许我打开输出文件并在 Visual Studio 中看到稍微乱码的 grunt 输出版本。
例如,我在 grunt.js 文件上运行 lint 任务,其中包含 JSHint 会反对的内容。我故意没有在后面加上分号var hello
,所以你会收到错误消息Missing semicolon
。
从命令行我得到一个格式很好的错误消息。
Running "lint:files" (lint) task
Linting grunt.js...ERROR
[L2:C10] Missing semicolon.
var hello
<WARN> Task "lint:files" failed. Use --force to continue. </WARN>
Aborted due to warnings.
当我从 Visual Studio 运行它时,输出文件包含这种混乱的格式:
[4mRunning "lint:files" (lint) task[24m
Linting grunt.js...[31mERROR[39m
[31m[[39m[33mL2[39m[31m:[39m[33mC10[39m[31m][39m [33mMissing semicolon.[39m
var hello[31m[7m [27m[39m
[31m<[39m[33mWARN[39m[31m>[39m [33mTask "lint:files" failed. Use --force to continue. [39m [31m</[39m[33mWARN[39m[31m>[39m
[31mAborted due to warnings.[39m
有谁知道所有这些方括号和数字在做什么,任何人都可以想到一个命令行开关或 grunt 开关或 node.js 开关来解释它们并将它们转换为格式吗?看起来不像某种编码,它们看起来更像是向命令行环境建议如何格式化消息的标签。请不要建议运行某种正则表达式替换功能。我想要一些快速简单的东西,否则它会变得比它的价值更麻烦。
更新:如果通过管道传输到另一个应用程序,则此链接输出将被切断,该链接指向 10 个月前节点上游的问题。虽然这已经解决了,但至少获得一个更具可读性的输出文件会很好。