我有一个非常简单的gulp任务,我试图完成:
gulpfile.js
gulp.task('build-dev', ['lint', 'jscs', 'clean-all', 'usemin'])
gulp.task('clean-all', function () {
return gulp.src(config.dest, { read: false })
.pipe(clean());
});
gulp.task('usemin', function () {
return gulp.src('index.html')
.pipe(usemin({
css: [rev(), minifyCss, 'concat'],
appjs: [uglify()],
vendorjs: [uglify()]
}))
.pipe(gulp.dest(config.dest + '/'));
});
gulp.config.js
module.exports = function() {
var root = './app/';
var dest = './build/dist';
var bower = {
json: require('./bower.json'),
directory: './bower_components/'
};
var nodeModules = 'node_modules';
var config = {
build: 'build/',
root: root,
dest: dest
};
return config;
};
似乎当我运行此文件时,如果我在dist
文件夹中有文件,那么它将成功清除文件,但不能完成usemin
任务。如果我有一个干净的dist
文件夹并运行它,那么它将完成usemin
我缺少什么,以便清除文件夹,然后重新创建它以将usemin
文件再次放入其中?
答案 0 :(得分:1)
似乎由于异步运行任务,您定义的任务不会同时运行。您应该尝试使用此answer上描述的任务来完成此链。
//fetch tasks
gulp.task('build-dev', ['lint', 'jscs', 'clean-all', 'usemin'])
gulp.task('clean-all', function () {
return gulp.src(config.dest, { read: false })
.pipe(clean());
});
//wait clean-all to exit
gulp.task('usemin', ['clean-all'], function () {
return gulp.src('index.html')
.pipe(usemin({
css: [rev(), minifyCss, 'concat'],
appjs: [uglify()],
vendorjs: [uglify()]
}))
.pipe(gulp.dest(config.dest + '/'));
});
答案 1 :(得分:0)
我会在run-sequence
模块中添加并用这样的内容替换build-dev
任务。
var runSequence = require('run-sequence').use(gulp)
gulp.task('build-dev', function(cb){
runSequence('clean-all', ['lint', 'jscs', 'usemin'], cb)
}
在删除文件时,您不希望其他任务正在运行。