Gulp 没有正确观看

Gulp not watching correctly

我是 gulp 的新手,我想我已经正确设置了它,但它似乎没有做它应该做的事情。

我的 gulpfile.js 有

    gulp.task('compass', function() {
      return gulp.src('sites/default/themes/lsl_theme/sass/**/*.scss')
      .pipe(compass({
        config_file: 'sites/default/themes/lsl_theme/config.rb',
        css: 'css',
        sass: 'scss'
      }))
      .pipe(gulp.dest('./sites/default/themes/lsl_theme/css'))
      .pipe(notify({
        message: 'Compass task complete.'
      }))
      .pipe(livereload());
   });

gulp.task('scripts', function() {
  return gulp.src([
      'sites/default/themes/lsl_theme/js/**/*.js'
    ])
    .pipe(plumber())
    .pipe(concat('lsl.js'))
    .pipe(gulp.dest('sites/default/themes/lsl_theme/js'))
    // .pipe(stripDebug())
    .pipe(uglify('lsl.js'))
    .pipe(rename('lsl.min.js'))
    .pipe(gulp.dest('sites/default/themes/lsl_theme/js'))
    .pipe(sourcemaps.write())
    .pipe(notify({
      message: 'Scripts task complete.'
    }))
    .pipe(filesize())
    .pipe(livereload());
});

和手表功能

gulp.task('watch', function() {
  livereload.listen();
  gulp.watch('./sites/default/themes/lsl_theme/js/**/*.js', ['scripts']);
  gulp.watch('./sites/default/themes/lsl_theme/sass/**/*.scss', ['compass']);
});

当我运行gulp时,结果是

[16:14:36] Starting 'compass'...
[16:14:36] Starting 'scripts'...
[16:14:36] Starting 'watch'...
[16:14:37] Finished 'watch' after 89 ms

并且没有注册任何更改。

文件结构,我的gulpfile.js在根目录,sass,css,js都在root/sites/default/themes/lsl_theme,sass 包含 'components' 充满部分的文件夹。

我的假设是你在 windows?如果我错了,请纠正我。

存在 gulp-notify 会破坏 gulp.watch 函数的问题。尝试注释掉

// .pipe(notify({
//   message: 'Scripts task complete.'
// }))

看看问题是否仍然存在。

如果这确实解决了问题,this thread 的解决方案可能会有所帮助。

You can use the gulp-if plugin in combination with the os node module to determine if you are on Windows, then exclude gulp-notify, like so:

var _if = require('gulp-if');

//...

// From 
var isWindows = /^win/.test(require('os').platform());

//...

     // use like so:
    .pipe(_if(!isWindows, notify('Coffeescript compile successful')))

事实证明,我的问题的很大一部分只是作为 Gulp 的菜鸟而已。当我从我的 gulp 手表中删除 'scripts' 时,它开始工作了。

然后我建立连接,它正在监视与放置新的串联和缩小的 js 文件的目录相同的目录,因此它正在放置新文件,检查该文件,并一遍又一遍地循环导致内存问题以及不允许 'compass' 到 运行.

在创建一个 'dest' 文件夹来保存新的 js 之后,一切都开始正常工作了。