このスレッド (エラー出力のキャプチャーの問題) は、私が苦労している問題の味を教えてくれます。MSBuild から grunt を実行しようとしていますが、Visual Studio の出力ウィンドウに grunt エラーが表示されません。Visual Studio Express 2012 for Web に .NET プロジェクトがあります。IMPORT タグを使用して外部プロジェクトをプロジェクト ビルド ファイルにインポートしました。インポートしたプロジェクトには、Grunt を実行しようとする Exec タスクがあります。私は明らかに、Visual Studio の出力ウィンドウに大騒ぎせずにうなり声を上げて出力するエラー メッセージを表示したいと考えています。少なくとも出力をテキスト ファイルに送信する非常に簡単な回避策を見つけました。
grunt.cmd > grunt-output.txt
この出力ファイルは私の .NET プロジェクト フォルダーのどこかにあるので、すばやく更新してダブルクリックすると、出力ファイルを開くことができ、Visual Studio でわずかに文字化けした出力が表示されます。
例として、JSHint が反対するものを含む grunt.js ファイルで lint タスクを実行しています。意図的にセミコロンを後に入れなかった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 スイッチを思いつく人はいますか? ある種のエンコーディングのようには見えません。メッセージをフォーマットする方法をコマンドライン環境に提案するためのタグのように見えます。ある種の正規表現置換関数を実行することを提案しないでください。手っ取り早く簡単なものが欲しいのです。
更新: このリンクは、別のアプリケーションにパイプされた場合に出力が切断され、 10 か月前のノードのさらに上流にある問題を示しています。それが整理されている間、少なくともより読みやすい出力ファイルを取得するといいでしょう。