如何使用Gulp在子目录中编译JS?

时间:2015-02-23 05:55:07

标签: javascript gulp gulp-concat

我的文件夹结构:

dashboard >
    components >
        accounts > accounts.js, accountsDirectives.js
        dash > dashApp.js
        settings > settings.js, settingsDirectives.js
        etc...

我在Gulpfile中的功能

function compile_js(minify, folder) {
    var jsLibs = gulp.src('client/'+folder+'/_sources/js/libs/*.js');
    var jsPlugins = gulp.src('client/'+folder+'/_sources/js/plugins/*.js');
    var jsCustom = gulp.src('client/'+folder+'/_sources/js/custom/*.js');
    var jsComponents = gulp.src('client/'+folder+'/components/*.js');

    // Order the streams and compile
    return streamqueue({ objectMode: true },
        jsLibs,
        jsPlugins,
        jsCustom,
        jsComponents
    )
    .pipe(concat(folder+'.module.js'))
    .pipe(gulpif(minify, uglify()))
    .pipe(gulp.dest('client/'+folder+'/assets/js'));
};

问题在于这一行,它以组件目录为目标:

var jsComponents = gulp.src('client/'+folder+'/components/*.js');

我也尝试了/components/**/*.js,但仍然无效。

我找到了 this answer here, which they talk about symlinks ,但我想避免使用它。 1)这似乎是一个黑客,2)这需要所有当前和未来的开发人员在他们的计算机上创建确切的符号链接。

是否有另一种方法可以轻松地定位和编译具有子目录的目录中的所有js文件?

1 个答案:

答案 0 :(得分:1)

您是否尝试先创建路径,然后使用gulp.src参数中的变量?我也很好奇,如果你正在缩小它们,为什么不用这样的东西抓住其中一些文件:

var someVar = gulp.src('client/'+folder+'/_sources/js/**/*.js');

VS

var jsPlugins = gulp.src('client/'+folder+'/_sources/js/plugins/*.js');
var jsCustom = gulp.src('client/'+folder+'/_sources/js/custom/*.js');