Можно ли получить имя файла в gulp4 gulp.watch Task? - PullRequest
0 голосов
/ 12 февраля 2019

Например, скажем, у меня есть этот слушатель:

gulp.watch('../templates/**/*.tpl', gulp.series('template'));

и связанная задача:

var template = gulp.task('template', function(done) {
    console.log(filename);
    done();
});

Возможно ли получить имя файла текущего файла .tpl, который имеетзапустил часы-событие и если да, то как?

1 Ответ

0 голосов
/ 14 февраля 2019

Из документов gulp.watch .

const { watch } = require('gulp');

const watcher = watch(['input/*.js']);

watcher.on('all', function(path, stats) {
 console.log(`File ${path} was changed`);
});

Вы можете использовать эту 'path' информацию следующим образом:

function scripts(myPath) {
  console.log(`in scripts, path = ${myPath}`);

  return gulp.src(myPath)
    .pipe(gulp.dest('pathTest'));
};

function watch(done) {

  const watcher = gulp.watch(["../templates/**/*.tpl"]);

  watcher.on('change', function (path, stats) {
    scripts(path);
  });

  done();
}

exports.default = gulp.series(watch);

Так что переставьте ваш код следующим образомприведенный выше пример:

const watcher = gulp.watch('../templates/**/*.tpl');
watcher.on('change', function (path,stats) {
  template(path);
};

function template(filename) {
    console.log(filename);
    return gulp.src…...
});
...