Gulp task 任务重构
🌙
手机阅读
本文目录结构
任务重构
当一个组合操作执行时,这个组合中的每一个任务每次被调用时都会被执行。
例如,在两个不同的任务(task)之间调用的 clean
任务(task)将被执行两次,并且将导致不可预期的结果。
因此,最好重构组合中的 clean
任务(task)。
如果你有如下代码:
// This is INCORRECT
const { series, parallel } = require('gulp');
const clean = function(cb) {
// body omitted
console.log('clean');
cb();
};
const css = series(clean, function(cb) {
// body omitted
console.log('css');
cb();
});
const javascript = series(clean, function(cb) {
// body omitted
console.log('javascript');
cb();
});
exports.default = parallel(css, javascript);
重构为:
const { series, parallel } = require('gulp');
function clean (cb) {
// body omitted
console.log('clean');
cb();
}
function css (cb) {
// body omitted
console.log('css');
cb();
}
function javascript (cb) {
// body omitted
console.log('javascript');
cb();
}
exports.default = series(clean, parallel(css, javascript));
任务可以嵌套任意深度
series()
和 parallel()
可以被嵌套到任意深度。
const { series, parallel } = require('gulp');
function clean(cb) {
// body omitted
cb();
}
function cssTranspile(cb) {
// body omitted
cb();
}
function cssMinify(cb) {
// body omitted
cb();
}
function jsTranspile(cb) {
// body omitted
cb();
}
function jsBundle(cb) {
// body omitted
cb();
}
function jsMinify(cb) {
// body omitted
cb();
}
function publish(cb) {
// body omitted
cb();
}
exports.default = series(
clean,
parallel(
cssTranspile,
series(jsTranspile, jsBundle)
),
parallel(cssMinify, jsMinify),
publish
);