对于正在编写的Web应用程序,我有一个非常简单的gulpfile,其主要功能是将所有文件从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:通过测试,我发现这不是手表的问题,而是手表每隔一段时间运行一次,无论它何时运行。通过禁用
moveFiles
或processSCSS
可以正常工作。 最佳答案
也许尝试将buildProjectFiles
更改为以下内容:
gulp.task('buildProjectFiles', ['clean'], function(callback) {
gulp.start(['moveFiles', 'processSCSS', 'processJS'], callback);
});
否则,我认为gulp不知道
buildProjectFiles
何时真正完成,并且可能有些任务与clean重叠。