Gulp 重复
Duplication in Gulp
这个重复不可能是正确的。你应该如何使用 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"));
});
我建议您将这个任务分成两个任务,一个是编译它们旁边的 cjsx 文件 (gulp.dest("src/")
),另一个是转译所有的 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");
您可以使用 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"));
});
这个重复不可能是正确的。你应该如何使用 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"));
});
我建议您将这个任务分成两个任务,一个是编译它们旁边的 cjsx 文件 (gulp.dest("src/")
),另一个是转译所有的 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");
您可以使用 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"));
});