2015-09-10 49 views
0

我有一个非常简单的(或者我认为)我正在写的web应用程序的gulp文件,主函数将所有文件从src目录移动到build目录,处理某些一路上的文件。它的设置使它在开始运行时运行,然后观察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可以正常工作。

+0

我sorta通过用'del'代替'gulp-clean'来解决它,但我仍然不知道为什么'gulp-clean'在我以前的工作中不起作用。 – SilverSerpent

回答

1

也许尝试改变buildProjectFiles来是这样的:

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

否则,我觉得咽不知道什么时候buildProjectFiles实际完成并可能有一些任务用干净的重叠。