Javascript GulpWebServer,过滤器是什么?

Javascript GulpWebServer,过滤器是什么?,javascript,filter,webserver,gulp,Javascript,Filter,Webserver,Gulp,我正在学习一系列教程,我很熟悉吞咽的原理 在下面的示例中,我似乎找不到过滤器函数的作用 此处也显示了该示例,但未提供进一步解释 这是代码 gulp.task('serve', function(done) { gulp.src('') .pipe(server({ livereload: { enable: true, filter: function(filePath, cb) { if(/main.js/.test

我正在学习一系列教程,我很熟悉吞咽的原理

在下面的示例中,我似乎找不到过滤器函数的作用

此处也显示了该示例,但未提供进一步解释

这是代码

gulp.task('serve', function(done) {
  gulp.src('')
    .pipe(server({
      livereload: {
        enable: true,
        filter: function(filePath, cb) {
          if(/main.js/.test(filePath)) {
            cb(true)
          } else if(/style.css/.test(filePath)){
            cb(true)
          }
        }
      },
      open: true
    }));
});

简短回答:

过滤器使您能够排除我更改的项目目录中的文件(例如git文件),但服务器不会自动重新加载。您可以在此函数中定义任意逻辑

更长的回答:

过滤器定义了一个函数,用于获取已更改文件的
filePath
,以及触发重新加载的预定义回调函数
cb

function (shouldReload) {
  if (shouldReload) {
    gutil.log('Livereload: file changed: ' + filename);

    config.livereload.io.sockets.emit('reload');
    // Treat changes to sourcemaps as changes to the original files.
    filename = filename.replace(/\.map$/, '');

    config.livereload.io.sockets.emit('file_changed', {
      path: filename,
      name: path.basename(filename),
      ext: path.extname(filename),
    });
  }
}
这意味着如果调用
cb(true)
服务器的实时重新加载完成

在我阅读您的示例时,仅当文件
main.js
style.css
发生更改时,您才希望重新加载服务器。因此,通过
\.
转义可能匹配任何字符的
(请参见正则表达式):

这意味着执行这个任务。保存和更改
main.js
style.css
将触发服务器的实时重新加载

我的服务器有时会卡住,无法重新加载。按一下CTRL+C有助于让他重新开始工作;-)

if(/main\.js/.test(filePath)) {
  cb(true)
} else if(/style\.css/.test(filePath)){
  cb(true)
}