gulpsrc返回空文件

gulpsrc返回空文件,gulp,gulp-watch,Gulp,Gulp Watch,我正在尝试为sass/js编译创建Gulp任务,并且还包含了用于实时重新加载的代码。它工作得很好,只是当我编辑空文件时,gulp.src有时会将空文件抛出管道 var gulp = require('gulp'); var sass = require('gulp-sass'), concat = require('gulp-concat'), uglify = require('gulp-uglify'), rename = require('gulp-rename'

我正在尝试为sass/js编译创建Gulp任务,并且还包含了用于实时重新加载的代码。它工作得很好,只是当我编辑空文件时,gulp.src有时会将空文件抛出管道

var gulp = require('gulp');

var sass = require('gulp-sass'),
    concat = require('gulp-concat'),
    uglify = require('gulp-uglify'),
    rename = require('gulp-rename'),
    clean = require('gulp-clean'),
    debug = require('gulp-debug'),
    livereload = require('gulp-livereload'),
    lr = require('tiny-lr'),
    server = lr(),
    spawn = require('child_process').spawn,
    node;


gulp.task('server', function() {
    if (node) node.kill();

    node = spawn('node', ['./index.js'], {stdio: 'inherit'});

    node.on('close', function (code) {
        if (code === 8) {
            gulp.log('Error detected, waiting for changes...');
        }
    });
});


gulp.task('html', function() {
    return gulp.src('./src/*.html')
        .pipe(gulp.dest('./build'))
        .pipe(livereload(server));
});


gulp.task('js', function() {
    return gulp.src(['./src/js/*.js'], { base: './' })
保存文件时,debug会检查
gulp.src
输出,大多数情况下,它会显示内容正确的文件,但有时这些文件是空的

        .pipe(debug())
        .pipe(concat("all.min.js"))
        .pipe(uglify())
        .pipe(gulp.dest('./build/js'))
        .pipe(livereload(server));
});


gulp.task('scss', function() {
    return gulp.src('./src/scss/*.scss')
        .pipe(sass())
        .pipe(concat("all.css"))
        .pipe(gulp.dest('./build/css/'))
        .pipe(livereload(server));
});


gulp.task('listen', function(next) {
    server.listen(35729, function(err) {
        if (err) return console.error(err);
        next();
    });
});


gulp.task('clean', function(){
    return gulp.src(['./build/*'], {read:false})
        .pipe(clean());
});


gulp.task('watch', function() {
    gulp.watch('./src/*.html', ['html']);
    gulp.watch('./src/scss/*.scss', ['scss']);
    gulp.watch('./src/js/*.js', ['js']);
    gulp.watch('./index.js', ['server']);
});


gulp.task('default', ['clean', 'html', 'scss', 'js', 'listen', 'server', 'watch'], function () {

});
我不知道如何解决这个问题。当我运行gulp时,它最初总是有效的,但当
gulp.watch
看到更改时,问题就会出现


当我使用sftp包将文件保存在Sublime文本中时,看起来文件最终是空的。这很奇怪,因为用Vim远程保存总是很好。

我不确定这是不是一种方法,但升华中的SFTP似乎需要更多的时间来更新服务器上的文件。即使文件未准备好,Gulp.watch也会触发Gulp任务。将setTimeout()添加到gulp.watch进程后,每次我现在保存时它都会工作

gulp.watch('./src/js/*.js', function() {
        setTimeout(function () {
            gulp.start('js');
        }, 300);
    });

欢迎来到StackOverflow!我建议把它作为一个答案发布,然后接受你自己的答案,这样其他人就可以知道如何轻松地解决这个问题。这看起来并不理想,但它解决了我的问题。谢谢我必须使用一个更高的数字,它才能持续工作,但现在我必须始终等待最短的时间。这也解决了我的问题。然而,我相信有更好的解决办法。