2015-02-05 154 views
0

這種重複是不對的。你應該怎麼用Gulp做這個?重複在吞嚥

gulp.task("default", function() { 
    gulp.src("src/**/*.cjsx") 
    .pipe(cjsx({bare: true}).on("error", gutil.log)) 
    .pipe(sourcemaps.init()) 
    .pipe(transpile({ 
     formatter: "bundle" 
    })) 
    .pipe(sourcemaps.write("./")) 
    .pipe(gulp.dest("public")); 

    gulp.src("src/**/*.js") 
    .pipe(sourcemaps.init()) 
    .pipe(transpile({ 
     formatter: "bundle" 
    })) 
    .pipe(sourcemaps.write("./")) 
    .pipe(gulp.dest("public")); 
}); 

回答

2

您可以使用gulp-if

它可以去像這樣

gulp.task("default", function() { 
    gulp.src("src/**/*.{cjsx,js}") // Gets both .cjsx and .js files 

    .pipe(gulpif(/[.]cjsx$/, cjsx({bare: true}).on("error", gutil.log))) // Do this only if file is a .cjsx 

    .pipe(sourcemaps.init()) 
    .pipe(transpile({ 
     formatter: "bundle" 
    })) 
    .pipe(sourcemaps.write("./")) 
    .pipe(gulp.dest("public")); 
}); 
1

我建議你分割這一個任務分成兩個任務,一個編譯cjsx文件旁邊本身(gulp.dest("src/")),再進行第二次到transpile所有js文件。如果你還想要,你可以讓js任務依賴於cjsx,或者只需通過cjsx運行。

gulp.task('cjsx', ....); 
gulp.task('js', 'cjsx', ....); 

例如,

gulp.task("cjsx", function() { 
    gulp.src("src/**/*.cjsx") 
    .pipe(cjsx({bare: true}).on("error", gutil.log)) 
    .pipe(gulp.dest("src")); 
}); 

gulp.task("js", "cjsx", function() { 
    gulp.src("src/**/*.js") 
    .pipe(sourcemaps.init()) 
    .pipe(transpile({ 
     formatter: "bundle" 
    })) 
    .pipe(sourcemaps.write("./")) 
    .pipe(gulp.dest("public")); 
}); 

gulp.task("default", "js");