Aquí está mi 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 ejecuto la tarea images
, scripts
o css
solo, funciona. Tuve que agregar las return
tareas; esto no estaba en el libro, pero buscar en Google me mostró que esto era necesario.
El problema que tengo es que los default
errores de la tarea:
[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)
Creo que es porque tampoco hay ninguna return
tarea en el reloj. Además, el mensaje de error no es claro, al menos para mí. Intenté agregar un return
después del último, gulp.watch()
pero tampoco funcionó.
fuente
styles
de quegulp.series('styles'));
es una función. En mi caso, lo habíasass
definido como función, pero tomé lo que estaba en el( )
como destino. Para cualquiera que haya seguido los tutoriales de "Gulp for Beginners" y se haya quedado atascado, la solución es reemplazar la líneagulp.watch('app/scss/**/*.scss', ['sass']);
congulp.watch('app/sass/**/*.sass', gulp.series('sass'));
gulp.watch('app/sass/**/*.sass', gulp.series('sass'));
ygulp.watch('app/sass/**/*.sass', gulp.series['sass']);
? Probé ambas líneas y no vi ningún cambio, pero estoy seguro de que hay una diferencia (que vendrá a atormentarme más adelante).Gracias por todo
para la versión gulp 4.xx
fuente
gulp.series('sass')
GULP-V4.0
Es un poco tarde para responder esto ahora mismo, pero aún así. Yo también estaba atrapado en este problema y así es como lo hice funcionar.
Análisis detallado de lo que estaba haciendo mal
watch
noté algunos cambios en mis archivos html.fireUp
yKeepWatching
estamos bloqueando. Deben iniciarse en paralelo en lugar de en serie. Entonces usé la función paralela en la variable run.fuente
Me funcionó en Gulp 4.0
fuente
// Comprueba lo que funcionó para mí
fuente