Запуск grunt от MSBuild

Этот поток (Ошибка вывода ошибок) дает вам представление о проблеме, с которой я борюсь. Я пытаюсь запустить grunt из MSBuild, и ошибки grunt не отображаются в окне вывода Visual Studio. У меня есть проект .NET в Visual Studio Express 2012 для Интернета. Я импортировал внешний проект в файл сборки проекта с тегом IMPORT, а в импортированном проекте у меня есть задача Exec, пытающаяся запустить grunt. Я, очевидно, хочу видеть сообщения об ошибках, которые торчат выходные данные в окне вывода Visual Studio без лишней суеты. Я нашел очень простой обходной путь, который по крайней мере отправляет вывод в текстовый файл.

grunt.cmd > grunt-output.txt

Этот выходной файл находится где-то в моей папке проекта .NET, поэтому быстрое обновление и двойной щелчок позволяют мне открыть выходной файл и увидеть немного искаженную версию вывода grunt в Visual Studio.

В качестве примера я запускаю задачу lint в файле grunt.js, в котором содержатся вещи, против которых будет возражать 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

Кто-нибудь узнает, что делают все эти квадратные скобки и числа, и может ли кто-нибудь подумать о переключателе командной строки или переключателе командной строки или коммутаторе node.js, который будет их интерпретировать и превратить в форматирование? Они не похожи на какую-то кодировку, они больше похожи на теги, которые предлагают среде командной строки, как форматировать сообщение. Пожалуйста, не предлагайте использовать функцию замещения регулярного выражения. Я хочу что-то быстро и легко, иначе это станет больше неприятностей, чем это стоит.

UPDATE: эта ссылка Выход отключается, если он подключен к другому приложению, указывает на проблему дальнейшего восходящего потока в node, начиная с 10 месяцев. Хотя при этом выясняется, что было бы неплохо получить более читаемый выходной файл.

Ответ 1

Этот поток на доске объявлений grunt Отключение перенаправления труб. Ошибка вывода Grunt эффективно устраняет эту проблему и обеспечивает быстрое обходное решение, пока мы ждем, когда проблема будет устранена, Это коды эвакуации для цветного вывода, и обходным путем является использование опции -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.

Ответ 2

В ответ на "Я, очевидно, хочу видеть сообщения об ошибках, которые печатают выходные данные в окне вывода Visual Studio без особых проблем".

Я бы посмотрел на VsCommandBuddy... он поможет вам интегрировать ваш хрюканье (и любую другую команду, если на то пошло) прямо в визуальную студию. Команды настроены для каждого решения/проекта, и на момент написания этой статьи становятся доступны через меню, панель инструментов, ярлыки и быстрый запуск...

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

Это проект, состоящий из царапин, моих собственных зубов. Это помогает мне делать тонкими. В каждом решении, которое я открываю в визуальной студии, я просто представляю внешние команды, которые я помещаю для этого решения/или приложения.

Выход идет по выходному окну по желанию. Параметр no-color для grunt удаляет весь шум.

Надеюсь, что это поможет!