有没有办法让watch函数获取正在监视的文件的名称?

时间:2016-04-12 14:07:54

标签: javascript node.js gulp

我已对这三款手表进行编码,但需要编写更多代码:

gulp.task('fl-index', function () {
    gulp.watch('index-fl.html', function () {
        return gulp.src('index-fl.html')
          .pipe(rename('index.html'))
          .pipe(gulp.dest('./'));
    })
});

gulp.task('ic-index', function () {
    gulp.watch('index-ic.html', function () {
        return gulp.src('index-ic.html')
          .pipe(rename('index.html'))
          .pipe(gulp.dest('./'));
    })
});

gulp.task('ts-index', function () {
    gulp.watch('index-ts.html', function () {
        return gulp.src('index-ts.html')
          .pipe(rename('index.html'))
          .pipe(gulp.dest('./'));
    })
});

由于所有的功能几乎都是一样的,我想知道我是否可以通过某种方式将其合并为一个gulp任务?

1 个答案:

答案 0 :(得分:1)

传递给gulp.watch()的函数每次发生更改时都会收到一个包含指向受影响文件的path属性的对象。

您可以使用它来统一您的三个任务:

var gulp   = require('gulp');
var rename = require('gulp-rename');
var path = require('path');

gulp.task('index', function () {
  gulp.watch('index-*.html', function (file) {
    return gulp.src(path.basename(file.path))
      .pipe(rename('index.html'))
      .pipe(gulp.dest('./'));
  })
});