Вот мой gulpfile:
// Modules & Plugins
var gulp = require('gulp');
var concat = require('gulp-concat');
var myth = require('gulp-myth');
var uglify = require('gulp-uglify');
var jshint = require('gulp-jshint');
var imagemin = require('gulp-imagemin');
// Styles Task
gulp.task('styles', function() {
return gulp.src('app/css/*.css')
.pipe(concat('all.css'))
.pipe(myth())
.pipe(gulp.dest('dist'));
});
// Scripts Task
gulp.task('scripts', function() {
return gulp.src('app/js/*.js')
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(concat('all.js'))
.pipe(uglify())
.pipe(gulp.dest('dist'));
});
// Images Task
gulp.task('images', function() {
return gulp.src('app/img/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/img'));
});
// Watch Task
gulp.task('watch', function() {
gulp.watch('app/css/*.css', 'styles');
gulp.watch('app/js/*.js', 'scripts');
gulp.watch('app/img/*', 'images');
});
// Default Task
gulp.task('default', gulp.parallel('styles', 'scripts', 'images', 'watch'));
Если я запускаю только задачу images
, scripts
или, css
она работает. Мне пришлось добавить return
в задачи - этого не было в книге, но поиск в Google показал, что это необходимо.
У меня проблема в том, что default
ошибки задачи:
[18:41:59] Error: watching app/css/*.css: watch task has to be a function (optionally generated by using gulp.parallel or gulp.series)
at Gulp.watch (/media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/node_modules/gulp/index.js:28:11)
at /media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/gulpfile.js:36:10
at taskWrapper (/media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/node_modules/undertaker/lib/set-task.js:13:15)
at bound (domain.js:287:14)
at runBound (domain.js:300:12)
at asyncRunner (/media/sf_VM_Shared_Dev/webdevadvlocal/gulp/public_html/gulp-book/node_modules/async-done/index.js:36:18)
at nextTickCallbackWith0Args (node.js:419:9)
at process._tickCallback (node.js:348:13)
at Function.Module.runMain (module.js:444:11)
at startup (node.js:136:18)
Думаю, это потому, что return
в часах тоже нет задачи. Также сообщение об ошибке неясно - по крайней мере, для меня. Я попытался добавить return
после последнего, gulp.watch()
но это тоже не сработало.
javascript
gulp
Арнольд Риммер
источник
источник
styles
вgulp.series('styles'));
это функция. В моем случае яsass
определил как функцию, но взял то, что было в,( )
как пункт назначения. Для тех, кто следит за обучающими программами «Gulp для начинающих» и застрял, исправление заключается в замене строкиgulp.watch('app/scss/**/*.scss', ['sass']);
наgulp.watch('app/sass/**/*.sass', gulp.series('sass'));
gulp.watch('app/sass/**/*.sass', gulp.series('sass'));
иgulp.watch('app/sass/**/*.sass', gulp.series['sass']);
? Я протестировал обе линии и не увидел изменений, но я уверен, что есть разница (которая будет преследовать меня позже).Спасибо за все
для версии gulp 4.xx
источник
gulp.series('sass')
GULP-V4.0
Немного поздно ответить на этот вопрос прямо сейчас, но все же. Я тоже застрял в этой проблеме, и вот как я получил ее.
Детальный разбор, что я делал не так
watch
заметил некоторые изменения в моих html файлах.fireUp
иKeepWatching
блокируют. Их нужно запускать параллельно, а не последовательно. Поэтому я использовал параллельную функцию в переменной run.источник
У меня это сработало в Gulp 4.0
источник
// Проверяем, что у меня сработало
источник