2015-11-06 4 views
11

vscode(0.9)でgulpタスクを使用して、typescriptとtslintの両方からエラーを取得しようとしています。isWatchingでタスクによって生成されたvscodeエラーは、固定された後に常にクリアされません。

gulpタスクは、自分のtsファイルの変更を監視しており、変更時にgulp-tslintとgulp-typescriptの両方を実行します。 また、vscode tasks.jsonと問題マッチャーでタスクを定義して結果を解析しました。

エラーは解析され、vscodeに正しく報告されます。 しかし、コードが固定されて保存されていても、時々保存されることがあります。

vscode問題マッチャーにいくつかの追加設定があり、エラーを正しくクリアするか、またはvscodeバグですか? 回避策として、すべてのエラーを手動でクリアする方法がありますか?私がそれらをクリアするために見つけた唯一の方法はvscodeを再起動することです。これは素晴らしいことではありません。

タスクが監視タスクではなく単純な実行であれば、これは正常に動作することに注意してください。

マイvscodeのtasks.json

{ 
    "version": "0.1.0", 
    "command": "gulp", 
    "isShellCommand": true, 
    "tasks": [ 
     { 
      "taskName": "watch", 
      // Make this the default build command. 
      "isBuildCommand": true, 
      // Watching 
      "isWatching": true, 
      // Show the output window only if unrecognized errors occur. 
      "showOutput": "always", 
      // Use the standard less compilation problem matcher. 
      "problemMatcher": [ 
       { 
        "owner": "gulp-tslint", 
        "fileLocation": [ 
         "relative", 
         "${workspaceRoot}/app" 
        ], 
        "pattern": { 
         "regexp": ".*\\[gulp-tslint\\] (error|warning) (.*)\\[(\\d*), (\\d*)\\]: (.*)", 
         "severity": 1, 
         "file": 2, 
         "line": 3, 
         "column": 4, 
         "message": 5 
        } 
       }, 
       { 
        "owner": "gulp-typescript", 
        "fileLocation": "absolute", 
        "pattern": { 
         "regexp": "\\[gulp-typescript\\] (.*)\\((\\d*),(\\d*)\\): (error|warning) (.*)", 
         "file": 1, 
         "line": 2, 
         "column": 3, 
         "severity": 4, 
         "message": 5 
        } 
       } 
      ] 
     } 
    ] 
} 

マイ一気のタスク定義:

const tslint = require('gulp-tslint'); 
const typescript = require('gulp-typescript'); 
gulp.task('watch', function() { 
    gulp.watch(srcTsFiles, ['tslint', 'compile']); 
}); 


gulp.task('tslint', function() { 
    return gulp.src(srcTsFiles) 
     .pipe(tslint()) 
     .pipe(tslint.report('prose', { 
      emitError: false, 
      summarizeFailureOutput: true 
     })); 
}); 


var tsProject = typescript.createProject('tsconfig.json'); 
gulp.task('compile', function() { 
    tsProject.src() 
    .pipe(typescript(tsProject, undefined,    typescript.reporter.longReporter())) 
    .pipe(gulp.dest('dist')); 
}); 

答えて

3

これはVSCodeのバグです。どういうわけか、開いているファイルに更新を適用しません。ファイルがクローズされると、古いエラーは取り除かれます。

回避策は、「作業ファイル」ヘッダーの小さな「すべてのファイルを閉じる」アイコンをクリックすることです。

問題が何であるか把握したい場合は、VSCodeリソースのJSファイルを調べてください。 OSXでは、それらはアプリケーションパッケージ内にあります。 workbench.main.jsを探してください。そこにtsc-watch問題マッチャーがあり、applyTo:c.ApplyToKind.closedDocumentsが設定されています。私はallDocumentsに変更しようとしましたが、役に立たないです。

+1

はまだVSCodeの現在のバージョンで起こります。 –

+0

公式レポの問題を作成しました.. https://github.com/Microsoft/vscode/issues/1229 –