从MSBuild运行grunt

时间:2013-01-27 13:09:17

标签: msbuild gruntjs

这个帖子(Problem capturing error output)让你领略我正在努力解决的问题。我正在尝试从MSBuild运行grunt,并且Visual Studio输出窗口中不显示grunt错误。我在Visual Studio Express 2012 for Web中有一个.NET项目。我已使用IMPORT标记将外部项目导入到项目构建文件中,并且在导入的项目中,我有一个尝试运行grunt的Exec任务。我显然希望在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开关,它们会解释它们并将它们变成格式化吗?看起来不像某种编码,它们看起来更像标签,向命令行环境建议如何格式化消息。请不要建议运行某种正则表达式替换功能。我想要快速简单的东西,否则它会变得比它的价值更麻烦。

更新:此链接Output gets cut off if piped into another application指向10个月后节点中更上游的问题。虽然这已经整理好了,但至少可以获得更易读的输出文件。

2 个答案:

答案 0 :(得分:8)

grunt留言板Pipe-redirecting Grunt's output is broken上的这个帖子完美地解决了这个问题,并提供了一个快速的解决方法,同时我们等待整个问题得到解决。它们是用于为输出着色的转义码,解决方法是使用--no-color选项删除着色。

从MSBuild运行此命令时

grunt.cmd --no-color > grunt-output.txt

我得到格式良好的输出,其内容与命令行完全相同:

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.

我可以没有颜色。如果将它发送到输出窗口会很好,因为MSBuild会在构建过程中抛出看起来像是错误的东西,实际上只是JSHint巧妙地伤害了我对JavaScript的感觉。

答案 1 :(得分:0)

回应“我显然希望在我的Visual Studio输出窗口中看到错误消息,而不会有太大的麻烦。”

我看看VsCommandBuddy ......它可以帮助你在visual studio中集成你的grunt(以及任何其他命令)。每个解决方案/项目都配置了命令,在撰写本文时,可通过菜单,工具栏,快捷方式和快速启动来获取...

http://visualstudiogallery.msdn.microsoft.com/f5da988e-2ec1-4061-a569-46d09733c668

这是一个划伤我自己的痒项目。它帮助我完成了这些工作。在我在visual studio中打开的每个解决方案中,我只是简单地介绍了我为该解决方案/或项目提供的外部命令。

根据需要输出到输出窗口。 grunt的无颜色选项可以消除所有噪音。

希望它有所帮助!!