我有一个非常简单的gulp文件,如下所示:
var gulp = require('gulp');
var jade = require('gulp-jade');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var count = require('gulp-count');
gulp.task('jade', function (done) {
gulp.src('./src/jade/pages/**/*.jade')
.pipe(jade())
.pipe(gulp.dest('./www/'))
.end(done);
});
gulp.task('js', function (done) {
gulp.src('./src/js/**/*.js')
.pipe(count('## js-files selected'))
.pipe(concat('script.js'))
.pipe(count('## js-files concat'))
.pipe(gulp.dest('./www/js/'))
.end(done);
});
gulp.task('sass', function (done) {
gulp.src('./src/sass/**/*.scss')
.pipe(sass())
.pipe(count('## scss-files sass'))
.pipe(concat('style.css'))
.pipe(count('## css-files concat'))
.pipe(gulp.dest('./www/css/'))
.end(done);
});
gulp.task('watch', ['jade', 'js', 'sass'], function () {
gulp.watch(['./src/jade/pages/**/*.jade'], ['jade']);
gulp.watch(['./src/sass/**/*.scss'], ['sass']);
gulp.watch(['./src/js/**/*.js'], ['js']);
});
gulp.task('default', ['jade', 'js', 'sass']);
但是,执行gulp
或gulp default
后,www
目录中没有任何内容。
如您所见,我已使用gulp-count
打印出已处理文件的数量,并显示至少有一个文件传递给gulp.dest
。这是CLI输出:
[23:16:11] Using gulpfile ~/work/web/lab-page/gulpfile.js
[23:16:11] Starting 'jade'...
[23:16:11] Starting 'js'...
[23:16:11] Starting 'sass'...
[23:16:11] Finished 'jade' after 12 ms
[23:16:11] Finished 'js' after 6.81 ms
[23:16:11] Finished 'sass' after 4 ms
[23:16:11] Starting 'default'...
[23:16:11] Finished 'default' after 6.09 μs
[23:16:11] 1 js-files selected
[23:16:11] 1 js-files concat
[23:16:11] 2 scss-files sass
[23:16:11] 1 css-files concat
但为什么没有生成文件?
我正在为我的流使用end
函数来触发结束回调,但似乎我做错了。现在我使用on('end', done)
将回调绑定到end
事件,它对我有用。
工作代码如下:
gulp.task('jade', function (done) {
gulp.src('./src/jade/pages/**/*.jade')
.pipe(jade())
.pipe(gulp.dest('./www/'))
.on('end', done);
});
gulp.task('js', function (done) {
gulp.src('./src/js/**/*.js')
.pipe(count('## js-files selected'))
.pipe(concat('script.js'))
.pipe(count('## js-files concat'))
.pipe(gulp.dest('./www/js/'))
.on('end', done);
});
gulp.task('sass', function (done) {
gulp.src('./src/sass/**/*.scss')
.pipe(sass())
.pipe(count('## scss-files sass'))
.pipe(concat('style.css'))
.pipe(count('## css-files concat'))
.pipe(gulp.dest('./www/css/'))
.on('end', done);
});
gulp.task('watch', ['jade', 'js', 'sass'], function () {
gulp.watch(['./src/jade/pages/**/*.jade'], ['jade']);
gulp.watch(['./src/sass/**/*.scss'], ['sass']);
gulp.watch(['./src/js/**/*.js'], ['js']);
});
gulp.task('default', ['jade', 'js', 'sass']);
我错了吗?而且,end
方法对gulp流做了什么?