我有一个gulp任务执行一些非常常见的任务 - 它运行jshint来验证我的代码,然后进行concats并最小化文件并将它们输出到单个.min.js文件中。
当我手动运行时,任务(看起来)完美无缺地执行。但第二次尝试在$ gulp.watch中使用它不再输出我的文件(它仍然执行并执行jshint)。
我的任务中的代码:
gulp.src(path.join(workingPath, folder, '/*.js'))
.pipe(jshint())
.pipe(jshint.reporter(stylish))
.pipe(jshint.reporter('fail')) //stop build if errors found
.on('error', function() {
console.log("Please review and correct jshint errors.");
this.end();
})
.pipe(order([ //order files before concat - ensure module definitions are first
"*.module.js",
"*.js"
]))
.pipe(concat(filename+'.js'))
.pipe(gulp.dest(destinationPath)) //full combined version
.pipe(uglify())
.pipe(rename(filename+'.min.js'))
.pipe(gulp.dest(destinationPath)) //minified combined version
.on('error',function() {
console.log("An error occurred during Gulp processing.");
this.end();
});
我的gulp手表(任务名称'组件'):
gulp.watch(componentsBasePath+"/**/*.js",['components']);
我注意到的一件事是在手动运行结束时我看到"流程已完成退出代码.."。如果我杀了我的gulp.watch它输出"处理完成退出代码.." - 然后它会创建输出文件!
我的目标是拥有我的组件'每次手表触发时,任务都会创建这些输出文件 - 而不仅仅是当我杀死手表时。
谢谢! 崖
答案 0 :(得分:1)
好的,所以我用解决jetbrains问题的hacky方法(即使用phpstorm),你必须了解2件事。
为了解决这个问题,我创建了一个名为saveSync的宏,它执行以下操作:
为什么我要同步3次?因为gulp需要几秒钟来完成任务(编译等),如果你在完成之前更新,显然项目视图没有正确更新。我还没有找到一种方法将时间延迟插入宏本身。
在我创建宏之后,我只是将ctrl + s
从全部保存到宏,然后就可以了。
如果有一种“更清洁”的方式,我还没有发现它。
答案 1 :(得分:0)
由其他人来做这个,他找到了问题的原因。虽然 - 结果并不是Gulp相关的。
当我手动运行'组件'任务时,我正在使用的IDE立即更新了文件夹和文件结构,但是当我运行gulp.watch任务时它没有做同样的事情。我很高兴地报告说文件是成功创建的,但是在我杀死任务之前它们从未出现在IDE中。