Voici mon 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'));
Si je lance le images
, scripts
ou la css
tâche seul cela fonctionne. J'ai dû ajouter le return
dans les tâches - ce n'était pas dans le livre mais googler m'a montré que c'était nécessaire.
Le problème que j'ai est que les default
erreurs de tâche:
[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)
Je pense que c'est parce qu'il n'y a pas non plus return
dans la tâche de surveillance. De plus, le message d'erreur n'est pas clair - du moins pour moi. J'ai essayé d'ajouter un return
après le dernier gulp.watch()
mais cela n'a pas fonctionné non plus.
la source
styles
engulp.series('styles'));
est une fonction. Dans mon cas, j'avaissass
défini comme une fonction, mais j'ai pris ce qui était dans le( )
comme destination. Pour tous ceux qui suivent les didacticiels "Gulp for Beginners" et sont bloqués, le correctif consiste à remplacer la lignegulp.watch('app/scss/**/*.scss', ['sass']);
pargulp.watch('app/sass/**/*.sass', gulp.series('sass'));
gulp.watch('app/sass/**/*.sass', gulp.series('sass'));
etgulp.watch('app/sass/**/*.sass', gulp.series['sass']);
? J'ai testé les deux lignes et je n'ai vu aucun changement, mais je suis sûr qu'il y a une différence (qui viendra me hanter plus tard).Merci pour tout
pour la version gulp 4.xx
la source
gulp.series('sass')
GULP-V4.0
Il est un peu tard pour répondre maintenant mais quand même. J'étais également coincé dans ce problème et c'est ainsi que je l'ai fait fonctionner.
Analyse détaillée de ce que je faisais mal
watch
j'ai remarqué des changements dans mes fichiers html.fireUp
etKeepWatching
bloquent. Ils doivent être démarrés en parallèle plutôt qu'en série. J'ai donc utilisé la fonction parallèle dans la course variable.la source
Cela a fonctionné pour moi dans Gulp 4.0
la source
// Vérifiez ce qui a fonctionné pour moi
la source