javascript - 运行gulp 中的 ["clean"] 为什么出现如此的错误。
天蓬老师
天蓬老师 2017-04-11 12:50:25
[JavaScript讨论组]

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)文件已经存在,再次生成。

想不明白,欢迎大神指教。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
伊谢尔伦



参考

PHPz

实际这个问题我早都解决了,一直没有更新状态。今天发现有人关注此问题,我就在这里补充下:

之前的问题在于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')
})

就会正确处理了。

天蓬老师

加return

这是我的gulp代码

// 清理dist文件夹
gulp.task('clean', function() {
    return del('dist');
});

// 监听任务
gulp.task('watch', ['clean'], function() {
    // 建立浏览器自动刷新服务器
    browserSync.init({
        server: {
            baseDir: "dist"
        }
    });
    // 自动刷新
    gulp.watch('src/**', function() {
        browserSync.reload();
    });
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号