Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript watch执行得太频繁_Javascript_Node.js_Gulp_Gulp Watch - Fatal编程技术网

Javascript watch执行得太频繁

Javascript watch执行得太频繁,javascript,node.js,gulp,gulp-watch,Javascript,Node.js,Gulp,Gulp Watch,我想动态地构建观察者。因此,我有以下代码: gulp.task('watch', ['build-styles'], function() { for(var j = 0; j < watchStylesIndicator.length; j++) { setWatchPipe(watchStylesIndicator[j]); } gulp .watch([ basePaths.dest + '/assets/css/*.css' ], [ 'build-m

我想动态地构建观察者。因此,我有以下代码:

gulp.task('watch', ['build-styles'], function() {
  for(var j = 0; j < watchStylesIndicator.length; j++) {
    setWatchPipe(watchStylesIndicator[j]);
  }

  gulp
    .watch([ basePaths.dest + '/assets/css/*.css' ], [ 'build-manifest' ])
    .on('change', function(event) { changeEvent(event); });
});

function setWatchPipe(groupName) {
  gulp.watch(watchStyles[groupName], function(e) {
    var name = groupName.charAt(0).toUpperCase() + groupName.slice(1);

    return gulp.src(appFiles.styles['src' + name])
      .pipe($.plumber({ errorHandler: function (error) {}}))
      .pipe($.rubySass({
          style: sassStyle,
          compass: true,
          noCache: true
      }))
      .pipe($.plumber.stop())
      .pipe(gulp.dest(paths.styles.destTemp))
      .pipe($.size({
          showFiles: true
      }));
  });
}

watchStylesIndicator = ['list', 'page', 'shop', 'submit'];

watchStyles = {
  shop: [
    basePaths.src + stylePaths + '/shop/shop.scss',
    basePaths.src + stylePaths + '/shop/_similar-shops.scss',
    basePaths.src + stylePaths + '/voucher/_view.scss'
  ],
  submit: [
    basePaths.src + stylePaths + '/voucher/submit.scss',
    basePaths.src + stylePaths + '/voucher/_view.scss',
    basePaths.src + stylePaths + '/_checkout.scss'
  ],
  list: [
    basePaths.src + stylePaths + '/voucher/list.scss',
    basePaths.src + stylePaths + '/voucher/_view.scss'
  ],
  page: [
    basePaths.src + stylePaths + '/voucher/_popup.scss',
    basePaths.src + stylePaths + '/voucher/_view.scss'
  ],
};

appFiles = {
  styles: {
    srcPage:    paths.styles.srcPage + '/page.scss',
    srcShop:    paths.styles.srcShop + '/shop.scss',
    srcSubmit:  paths.styles.srcVouch + '/submit.scss',
    srcList:    paths.styles.srcVouch + '/list.scss'
  }
};
gulp.task('watch',['build-styles',function()){
对于(var j=0;j
监视任务最初构建所有样式表。之后,它为循环中的每个主样式表生成观察者

我的问题是,我有这些主要的scss文件,它们都可以导入相同的文件。在本例中,它是_view.scss。 当我在这个文件(_view.scss)中进行更改时,相应的主样式表被覆盖的频率与导入时的_view.scss相同。因此,在本例中,_views.scs被导入4次,因此每个主样式表被覆盖4次

如何实现一次执行


您好,Lars

我不确定我是否理解您在这里试图做什么,但是一个可接受的解决方案是使用@includes包含所有其他scss文件的单个main.scss文件,并将其编译成单个css文件吗?这至少可以解决你的问题(如果我理解正确的话)。我可以写一个完整的答案,但我现在不明白这对你来说是否不是一个好的解决方案。我会这样做的。我在所有的项目中都这样做。这是我的第一个建议,但是有很多scss文件,结构必须保持不变。所以,我不能改变它。这就是为什么我必须找到多重执行问题的解决方案。