Быстрое исправление этой конкретной ошибки состоит в том, что вы вызвали gulp.series
для пустой / несуществующей задачи в вашей задаче push
. gulp.series
ожидает либо список строк, соответствующих объявленным вами задачам (таким как push
, watch
и default
), либо функциям задач.
Избавление от задачи ''
в серии исправит это:
gulp.task('push', gulp.series(function(){
exec('clasp push')
}));
Однако теперь у вас есть другие проблемы:
- Ни одна из ваших задач не имеет обратных вызовов. Каждая задача Gulp является асинхронной, поэтому вы должны либо использовать обратные вызовы, либо
return
поток / обещание / источник событий / дочерний процесс / observable (примеры находятся в документации здесь ). Как пример:
gulp.task('push', function(done){
exec('clasp push', function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
done(err);
});
});
- Вы не передаете функцию или последовательность / параллельную последовательность в
gulp.watch
, поэтому она ничего не делает. Если вы пытаетесь запустить задачу push
всякий раз, когда изменяются какие-либо файлы .js
или .html
, вам нужно изменить ее на:
gulp.task('watch', function(done) {
gulp.watch([
'**/*.js',
'**/*.html'
], gulp.series('push'));
done();
});
- У ваших шаблонов глобуса есть дополнительный пробел в команде наблюдения перед расширением файла:
'**/*.js'
вместо '**/* .js'
- Скорее всего, вы хотите, чтобы
require("child_process").exec
(с добавленным тегом .exec
) позволял вам выполнять команды оболочки с использованием синтаксиса exec(command)
.
- Вам не нужно повторять команду
watch
при вызове ее в задаче default
:
gulp.task('default', gulp.series('push', 'watch'));
- Вы можете удалить множество вызовов
gulp.series
, чтобы удалить вызовы задачи <anonymous>
и упростить задачи. Каждой задаче нужна только одна функция, и вы, вероятно, должны стремиться использовать gulp.series
и gulp.parallel
с наборами именованных задач.
Изменяя эти точки, код должен выглядеть примерно так:
const gulp = require('gulp');
const exec = require('child_process').exec;
gulp.task('push', function(done){
exec('clasp push', function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
done(err);
});
});
gulp.task('watch', function(done) {
gulp.watch([
'**/*.js',
'**/*.html'
], gulp.series('push'));
done();
});
gulp.task('default', gulp.series('push', 'watch'));
Вы можете переписать это, используя рекомендуемый шаблон экспорта задач gulp v4:
const { series, watch } = require('gulp');
const { exec } = require('child_process');
function push(done) {
exec('clasp push', function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
done(err);
});
}
function watchPush() {
return watch(['**/*.js', '**/*.html'], push);
}
exports.push = push;
exports.default = exports.watch = series(push, watchPush);