gulp-open在createWriteStream之后不工作

我正在使用gulp,gulp-eslint和gulp-open来创build一个ESLint结果的报告。 linting和文件写入部分工作正常,但打开文件的任务,我写了我的报告,没有。

gulp.task('LintAll_Report_After', ['LintAll'], function () { gulp.src('./_reports/eslint-html-result.html').pipe(open()); }); gulp.task('LintAll_Report', function () { gulp.src('./_reports/eslint-html-result.html').pipe(open()); }); gulp.task('LintAll', function () { gulp.src('./_reports/eslint-html-result.html').pipe(open()); var stream = gulp.src(filesToLintGlob) .pipe(eslint()) .pipe(eslint.format('html', fs.createWriteStream('./_reports/eslint-html-result.html'))); //stream.on('finish', function () { // console.log('finished'); // stream.end(); // setTimeout(function () { // gulp.src('./_reports/eslint-html-result.html').pipe(open()); // }, 10000); //}); return stream; }); 
  • LintAll删除我的文件,然后将结果写入一个HTML文件。
  • LintAll_Report在浏览器中打开我的报告。
  • LintAll_Report_After在完成LintAll任务后应该打开我的报告。

LintAll工作正常。问题是报告打开:LintAll_Report工作,如果自己调用…但LintAll_Report_After不起作用。 没有错误,在任务运行资源pipe理器控制台我什至看到行[13:40:17] Opening C:\GITDEV\stiletto-online\_reports\eslint-html-result.html using the default OS app就像与LintAll_Report,但文件不在浏览器中打开。

任何想法为什么会发生这种情况? 我甚至试图通过绑定到一个事件打开文件,但是这也没有成功 – 我得到的消息,它正在打开文件,但没有任何反应。 这是评论部分。 即使尝试使用或不使用setTimeout,并且不pipe调用stream.end()

我的第一个猜测是,它不会打开文件,因为它没有完成写入,出了什么问题,但是这是事件绑定和超时的反驳。 现在我真的无能为力了

编辑:我忘了补充:初始化调用打开LintAll也不工作。 删除通话不会改变结果。

编辑2:我只是尝试安装不同版本的NodeJS并设置VS,以便它会使用我的自定义版本 – 但没有区别。

我find了一个方法来使它工作,但我不满意。

通过先在LintAll和LintAll_Report中指定文件顶部的Task Runner Explorer绑定,它似乎正在工作

 /// <binding BeforeBuild='LintAll, LintAll_Report' /> 

但是,这不是一个正确的方式来做到这一点,如果任何人有更好的答案,我会很高兴听到。