2015-09-10 71 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實際完成並可能有一些任務用乾淨的重疊。