Как перейти на gulp v4 из 3? - PullRequest
2 голосов
/ 18 марта 2019
gulp.watch('watch', function() {
 watch('./app/index.html', function() {
  gulp.start('html');
 });
});

Я хочу запустить задачу с именем «html» при внесении каких-либо изменений в файл. Это работало в предыдущей версии gulp, поскольку на данный момент генерирует следующую ошибку. gulp.start не является функцией .

Я не могу найти способ добиться этого в более новой версии глотка. Все, что я нашел, что мне нужно изменить его, чтобы функционировать, но я не могу найти то, что мне нужно изменить и как?

Остальная часть кода выглядит следующим образом

var gulp = require("gulp"),
    watch = require('gulp-watch');

gulp.task('default', function(done){
  console.log("You created the default task");
  done();``
});

gulp.task('html', function(done){
  console.log('modifying the html');
  done();
});

gulp.watch('watch', function() {
 watch('./app/index.html', function() {
  gulp.start('html');
 });
});

1 Ответ

2 голосов
/ 18 марта 2019

Вам не нужно преобразовывать свои задачи в именованные функции - хотя это считается наилучшей практикой и это легко сделать.

Чтобы исправить задачу часов, попробуйте:

gulp.watch('watch', function(done) {
 watch('./app/index.html', gulp.series('html'));
 done();  
});

Чтобы перейти к именованным функциям:

function html(done) {
  gulp.src(….)
    console.log('modifying the html');
    done();
};

function watch(done) {
 watch('./app/index.html', gulp.series('html'));
 done();  
});

exports.html= gulp.series(html);
exports.default = gulp.series(watch);

Обратите внимание, что теперь задача watch не вызывается как строка, т. Е. 'watch', а просто watch.

В exports.html gulp.series не является строго необходимым, так как там есть только одна задача, поэтому достаточно exports.html= html;.

И экспортировать задачу нужно только в том случае, если вы хотите вызвать ее напрямую (например, из командной строки gulp html). Если, скажем, задача html будет вызываться только изнутри другими задачами, тогда нет необходимости export ее.

...