对于我正在编写的Web应用程序,我有一个非常简单(或者我认为)的gulpfile,main函数将所有文件从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
来正常工作。
答案 0 :(得分:2)
也许尝试将buildProjectFiles
更改为以下内容:
gulp.task('buildProjectFiles', ['clean'], function(callback) {
gulp.start(['moveFiles', 'processSCSS', 'processJS'], callback);
});
否则我认为gulp不知道buildProjectFiles
何时实际完成,并且可能有一些任务与干净重叠。