Gulp调用子模块

时间:2016-05-25 11:28:13

标签: javascript gulp gulp-shell gulp-folders

有一个父文件夹(gulp模块),它有一些子文件夹(也是gulp模块)。我想通过父项的gulp文件运行每个子项的默认gulp任务。

我的方法是使用gulp-folders遍历文件夹,并通过将当前工作目录设置为相应的子项来运行gulpgulp-shell

var tOptions = {};
[...]

gulp.task('setup-modules', folders('./', function(folder){
    tOptions.cwd = folder;
    gulp.start('setup-module');
    return gulp.src('', {read: false});
}));

gulp.task('setup-module', shell.task([
    'gulp'
], tOptions));

似乎只有一个任务setup-module的实例启动了。我需要更改以获取正在运行的任务的多个实例(对于每个子文件夹)?

1 个答案:

答案 0 :(得分:2)

您可以使用gulp-chug而不是使用gulp-shell,并将一个glob传递给gulp.src()来访问您的子gulp文件,从而无需迭代每个子目录。如果您想运行default以外的任何任务,您甚至可以specify which tasks you would like to run

此外,gulp-chug将会做所有事情,因此不需要仅依赖于一个包完成您想要做的事情。

One of the examples from the gulp-chug docs几乎覆盖了您正在讨论的确切场景。

gulpfile.js(parent)

// This example was taken from the gulp-chug docs

var gulp = require( 'gulp' );
var chug = require( 'gulp-chug' );

gulp.task( 'default', function () {

    // Find and run all gulpfiles under all subdirectories 
    gulp.src( './**/gulpfile.js' )
        .pipe( chug() )
} );