从this StackOverflow post开始,我了解到一般不应该在gulp任务中返回任何内容。我希望调用者等待异步任务。
这是我gulpfile.js
目前的样子:
'use strict';
var gulp = require('gulp'),
uglify = require('gulp-uglify'),
livereload = require('gulp-livereload'),
del = require('del'),
util = require('gulp-util'),
paths = {
scripts: {
main: 'app.js',
controllers: 'controllers/*.js',
services: 'services/*.js'
},
css: 'css/*.css',
html: {
index: 'index.html',
views: 'views/*.html',
directives: 'directives/*.html'
},
bower_components: 'bower_components/*.*'
};
gulp.task('build-js', function() {
var destination;
for (var key in paths.scripts) {
util.log('Building ' + key);
if (/\*\.js$/.test(paths.scripts[key])) { // just so I catch app.js correctly in the paths
destination = 'build/' + paths.scripts[key].slice(0, -4);
} else {
destination = 'build/';
}
gulp.src(paths.scripts[key])
.pipe(uglify())
.pipe(gulp.dest(destination));
}
util.log('returning..');
return;
});
我不确定在build-js
任务中应该返回什么。
这样做的最佳做法是什么?我不想安装另一个模块来解决这个问题。
任何人都可以指出我正确的方向吗?
答案 0 :(得分:0)
Gulp将为您迭代所有文件而无需循环。如果你想做有条件的东西,那么使用gulp-if。这是基本的想法:
gulp.task('build-js', function() {
var destination;
return gulp.src(paths.scripts)
//.pipe(gulp-if(....))
.pipe(uglify())
.pipe(gulp.dest(destination));
}
});