吞咽& # 39;清洁# 39;第二次运行时出错

Gulp 'clean' giving error on second run

本文关键字:运行时 出错 第二次 清洁 吞咽      更新时间:2023-09-26

我有一个非常简单的(或者我认为)gulpfile为一个web应用程序我正在写,主函数移动所有的文件从src目录到build目录,一路上处理某些文件。它被设置为在gulp启动时运行,然后观察src目录的变化,并在发生变化时再次运行。它在第一次运行时运行得很好,但是每当它从watch函数运行时,它都会返回这个错误:

Error: ENOENT, lstat '/Users/sawyer/Desktop/Web Scraper/online/build/css/styles.css'

下面是我的gulpfile(注意如果没有chmod,它也会给出相同的错误):

var gulp = require('gulp');
var chmod = require('gulp-chmod');
gulp.task('default', ['buildProjectFiles'], function() {
    gulp.watch('src/**/*', ['buildProjectFiles']);
});
gulp.task('buildProjectFiles', ['clean'], function() {
    gulp.start('moveFiles');
    gulp.start('processSCSS');
    gulp.start('processJS');
});
gulp.task('clean', function() {
    var clean = require('gulp-clean');
    return gulp.src('build/**/*', {read: false})
        .pipe(clean());
});
gulp.task('moveFiles', function() {
    return gulp.src(['src/**/*.php', 'src/**/*.json', 'src/fonts/*', 'src/img/*'], {base: 'src'})
        .pipe(chmod(766))
        .pipe(gulp.dest('build'));
});
gulp.task('processSCSS', function() {
    var sass = require('gulp-sass');
    return gulp.src('src/scss/*.scss', {base: 'src/scss'})
        .pipe(sass().on('error', sass.logError))
        .pipe(chmod(766))
        .pipe(gulp.dest('build/css'));
});
gulp.task('processJS', function() {
    var uglify = require('gulp-uglify');
    return gulp.src('src/js/**/*.js', {base: 'src'})
        .pipe(uglify())
        .pipe(chmod(766))
        .pipe(gulp.dest('build'));
});

任何想法?

编辑:即使使用clean({force: true})也不起作用

编辑2:从我的测试中,我发现这不是手表的问题,而是它每隔一次运行,不管它什么时候运行。通过禁用moveFilesprocessSCSS可以很好地工作。

也许可以尝试将buildProjectFiles更改为以下内容:

gulp.task('buildProjectFiles', ['clean'], function(callback) {
    gulp.start(['moveFiles', 'processSCSS', 'processJS'], callback);
});

否则我认为gulp不知道buildProjectFiles实际完成时,可能会有一些任务与clean重叠。