javascript - 运行gulp 中的 ["clean"] 为什么出现如此的错误。
本文介绍了javascript - 运行gulp 中的 ["clean"] 为什么出现如此的错误。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
1.在每一次gulp构建的时候先删除dist目录,但是为什么运行
gulp.task('clean',function(){
gulp.src(['./dist'])
.pipe(clean())
.pipe(notify({ message: 'clean is ok' }));
});
gulp.task('build',['clean'],function(){
gulp.start('imageMin', 'html','font','over')
})
的时候却报错呢?(如果第一次构建的时候,dist目录不存在的情况下,直接运行gulp build是成功的,但是如果在dist目录存在的情况下,运行gulp build却会报错)
2.报错信息
从报错信息来看是(1)clean再次进行删除已经不存在的文件导致报错(2)文件已经存在,再次生成。
想不明白,欢迎大神指教。
解决方案
实际这个问题我早都解决了,一直没有更新状态。今天发现有人关注此问题,我就在这里补充下:
之前的问题在于task-clean没有正确异步执行,出现这个问题的原因是没有return。
那么什么是正确的异步执行呢?
API文档给出了详细解释,这里不做详细介绍。http://www.gulpjs.com.cn/docs...
其中最重要的一点着重提出:
正确的异步执行方式:使用一个 callback,或者返回一个 promise 或 stream。
如果你想要创建一个序列化的 task 队列,并以特定的顺序执行,你需要做两件事:
给出一个提示,来告知 task 什么时候执行完毕,
并且再给出一个提示,来告知一个 task 依赖另一个 task 的完成。
那么对之前的问题进行改进:
gulp.task('clean',function(){
return gulp.src(['./dist','./rev'])
.pipe(clean())
});
gulp.task("build",["clean"],function(){
runSequence("htmlMove",['imageMin','reCollector','btMove','views'],'over')
})
就会正确处理了。
这篇关于javascript - 运行gulp 中的 ["clean"] 为什么出现如此的错误。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文