如何根据所有gulp任务的后缀/扩展名进行过滤?

时间:2016-01-07 23:42:55

标签: javascript architecture gulp task environment

允许'说我有20个任务,都抓住不同的文件类型并执行不同的事情。

我们还说我有两个环境,即开发和生产。

基本上,我希望有一个类似这样的目录结构:

/app
    /product
        product.main.ctrl.js
        product.add.development.ctrl.js

在标准开发模式下运行时,我希望应用程序能够像通常那样编译几乎所有的javascript。

但如果我在生产模式下运行gulp,我想要排除其中包含development字样的所有文件。

我想知道是否有办法一次性扩展所有任务,而不是仅仅手动将排除添加到每个任务:

// default task, I'd like to automatically extend this and exclude depending on evn.
gulp.task('scripts:main', function() {
    return gulp.src('/app/**/*.js', streamFunction);
});
// a working example of what I'd like to do
gulp.task('scripts:main', function() {
    return gulp.src(['/app/**/*.js', '!/app/**/*.development.js'], streamFunction);
});

所以上面有默认情况,我想扩展,只是默认情况下,否则我排除dev文件,方案2是可行的,但我不想要将其添加到每个任务中。

这可能吗?

1 个答案:

答案 0 :(得分:0)

通常您应该使用配置设置在所有任务中使用

var config = {
  jsProd : ['/app/**/*.js', '!/app/**/*.development.js'],
  jsDev : ['/app/**/*.js']
}

这使得路径更具可重用性......

在你的任务中,只需使用配置变量

gulp.task('scripts:main', function() {
    return gulp.src(config.jsProd, streamFunction);
});

这是按照约翰爸爸的风格指南