admin管理员组文章数量:1297247
I'm working through the book Getting Started With Gulp (which was published in January 2015) but I realize that because development with Gulp is moving quite fast it may be slightly out of date already.
Here is my gulpfile:
// Modules & Plugins
var gulp = require('gulp');
var concat = require('gulp-concat');
var myth = require('gulp-myth');
var uglify = require('gulp-uglify'); // newly added
var jshint = require('gulp-jshint'); // newly added
var imagemin = require('gulp-imagemin');
// let's add two node.js modules:
var connect = require('connect');
// var serve = require('serve-static');
var browsersync = require('browser-sync');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var plumber = require('gulp-plumber');
// Tasks
// styles task
gulp.task('styles', function(){
return gulp.src('app/css/*.css')
// now we add our pipes:
.pipe(plumber())
.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'));
});
// browsersync Task:
gulp.task('browsersync', function(cb) {
return browsersync({
server: {
baseDir:'./'
}
}, cb);
});
// browserify Task:
gulp.task('browserify', function() {
return browserify('./app/js/app.js')
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('dist'));
});
// watch task:
gulp.task('watch', function() {
gulp.watch('app/css/*.css',
gulp.series('styles', browsersync.reload));
gulp.watch('app/js/*.js',
gulp.series('scripts', browsersync.reload));
gulp.watch('app/img/*',
gulp.series('images', browsersync.reload));
});
// Default Task
gulp.task('default', ['styles', 'scripts', 'images', 'browsersync', 'browserify', 'watch']);
EDIT: After changing the final gulp.task
line, it runs but I still get the following error:
[13:51:21] Starting 'watch'...
[13:51:21] 'watch' errored after 146 μs
[13:51:21] TypeError: undefined is not a function
at Gulp.<anonymous> (/Volumes/BigMan/Code/javascript/gulp-book/gulpfile.js:79:9)
at module.exports (/Volumes/BigMan/Code/javascript/gulp-book/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:34:7)
at Gulp.Orchestrator._runTask (/Volumes/BigMan/Code/javascript/gulp-book/node_modules/gulp/node_modules/orchestrator/index.js:273:3)
at Gulp.Orchestrator._runStep (/Volumes/BigMan/Code/javascript/gulp-book/node_modules/gulp/node_modules/orchestrator/index.js:214:10)
at Gulp.Orchestrator.start (/Volumes/BigMan/Code/javascript/gulp-book/node_modules/gulp/node_modules/orchestrator/index.js:134:8)
at /usr/local/lib/node_modules/gulp/bin/gulp.js:129:20
at process._tickCallback (node.js:355:11)
at Function.Module.runMain (module.js:503:11)
at startup (node.js:129:16)
at node.js:814:3
I'm working through the book Getting Started With Gulp (which was published in January 2015) but I realize that because development with Gulp is moving quite fast it may be slightly out of date already.
Here is my gulpfile:
// Modules & Plugins
var gulp = require('gulp');
var concat = require('gulp-concat');
var myth = require('gulp-myth');
var uglify = require('gulp-uglify'); // newly added
var jshint = require('gulp-jshint'); // newly added
var imagemin = require('gulp-imagemin');
// let's add two node.js modules:
var connect = require('connect');
// var serve = require('serve-static');
var browsersync = require('browser-sync');
var browserify = require('browserify');
var source = require('vinyl-source-stream');
var plumber = require('gulp-plumber');
// Tasks
// styles task
gulp.task('styles', function(){
return gulp.src('app/css/*.css')
// now we add our pipes:
.pipe(plumber())
.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'));
});
// browsersync Task:
gulp.task('browsersync', function(cb) {
return browsersync({
server: {
baseDir:'./'
}
}, cb);
});
// browserify Task:
gulp.task('browserify', function() {
return browserify('./app/js/app.js')
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('dist'));
});
// watch task:
gulp.task('watch', function() {
gulp.watch('app/css/*.css',
gulp.series('styles', browsersync.reload));
gulp.watch('app/js/*.js',
gulp.series('scripts', browsersync.reload));
gulp.watch('app/img/*',
gulp.series('images', browsersync.reload));
});
// Default Task
gulp.task('default', ['styles', 'scripts', 'images', 'browsersync', 'browserify', 'watch']);
EDIT: After changing the final gulp.task
line, it runs but I still get the following error:
[13:51:21] Starting 'watch'...
[13:51:21] 'watch' errored after 146 μs
[13:51:21] TypeError: undefined is not a function
at Gulp.<anonymous> (/Volumes/BigMan/Code/javascript/gulp-book/gulpfile.js:79:9)
at module.exports (/Volumes/BigMan/Code/javascript/gulp-book/node_modules/gulp/node_modules/orchestrator/lib/runTask.js:34:7)
at Gulp.Orchestrator._runTask (/Volumes/BigMan/Code/javascript/gulp-book/node_modules/gulp/node_modules/orchestrator/index.js:273:3)
at Gulp.Orchestrator._runStep (/Volumes/BigMan/Code/javascript/gulp-book/node_modules/gulp/node_modules/orchestrator/index.js:214:10)
at Gulp.Orchestrator.start (/Volumes/BigMan/Code/javascript/gulp-book/node_modules/gulp/node_modules/orchestrator/index.js:134:8)
at /usr/local/lib/node_modules/gulp/bin/gulp.js:129:20
at process._tickCallback (node.js:355:11)
at Function.Module.runMain (module.js:503:11)
at startup (node.js:129:16)
at node.js:814:3
Share
Improve this question
edited Mar 23, 2015 at 18:03
damianesteban
asked Mar 23, 2015 at 17:27
damianestebandamianesteban
1,6111 gold badge19 silver badges37 bronze badges
2
- What version of gulp? – cport1 Commented Mar 23, 2015 at 17:46
- The version is 3.8.11 – damianesteban Commented Mar 23, 2015 at 17:48
2 Answers
Reset to default 22I'm reading the same book and found it extrange that it doesn't work. I noticed all you had to do was to update Gulp to 4.0
Why isn't it working
In order to accomplish the parallel and series feature from Gulp, you must install Gulp 4.0
How to install
Global installation
npm uninstall gulp -g
npm install gulpjs/gulp-cli#4.0 -g
or
yarn global add gulpjs/gulp.git#4.0
From within your project
npm uninstall gulp
npm install gulpjs/gulp.git#4.0 --save-dev
or
yarn add gulpjs/gulp.git#4.0
I also found a bunch of tutorials talking about the new features from Gulp 4.0
I'm assuming this is because the book was written with the upcoming features in mind. I think that sometimes it cannot be assumed that the project will move as fast. What I still don't understand is the difference between gulp.parallel
and just passing an array.
http://fettblog.eu/gulp-4-parallel-and-series/
One more thing:
In gulp4 you must specify parallel/series for the watch task:
gulp.task('watch', function() {
gulp.watch('app/css/*.css', gulp.parallel('styles'));
gulp.watch('app/jss/*.js', gulp.parallel('scripts'));
gulp.watch('app/img/*', gulp.parallel('images'));
})
I'm not sure where the gulp.parallel or gulp.series is coming from but you should be able to accomplish the same thing by changing your code to this:
// watch task:
gulp.task('watch', function() {
gulp.watch('app/css/*.css', ['styles', browsersync.reload]);
gulp.watch('app/js/*.js', ['scripts', browsersync.reload]);
gulp.watch('app/img/*', ['images', browsersync.reload]);
});
gulp.task('default', ['styles', 'scripts', 'images', 'browsersync', 'browserify', 'watch']);
As far as I can tell .series and .parallel don't exist. Once I made those updates it works.
If you need to run tasks in series, I have had good luck with this module: https://github.com/OverZealous/run-sequence. You would change your watch task to this:
var runSequence = require('run-sequence');
// watch task:
gulp.task('watch', function() {
gulp.watch('app/css/*.css', runSequence('styles', browsersync.reload));
gulp.watch('app/js/*.js', runSequence('scripts', browsersync.reload));
gulp.watch('app/img/*', runSequence('images', browsersync.reload));
});
本文标签: javascriptMaking a gulpfile getting an error when call gulpparallelStack Overflow
版权声明:本文标题:javascript - Making a gulpfile: getting an error when call gulp.parallel - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1738501916a2090316.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论