【发布时间】:2019-09-11 12:00:29
【问题描述】:
我正在考虑使用 gulp.parallel() 来同时运行构建任务。当我尝试一个玩具示例时,我发现只有 1 个 CPU 内核(运行 top 时看到了 1 个 gulp 进程)正在运行所有任务。这是我的玩具示例:
const { parallel } = require('gulp');
function javascript(cb) {
setTimeout(function() {
console.log("Javascript task!")
cb();
}, 20000);
}
function css(cb) {
setTimeout(function() {
console.log("CSS task!")
cb();
}, 10000);
}
function prettify(cb) {
setTimeout(function() {
console.log("Prettify task!")
cb();
}, 15000);
}
function colorize(cb) {
setTimeout(function() {
console.log("Colorize task!")
cb();
}, 5000);
}
function defaultTask(cb) {
// place code for your default task here
cb();
}
exports.default = defaultTask
exports.build = parallel(javascript, css, prettify,colorize);
当我执行“gulp build”时,我看到任务同时运行(上例中所有 4 个任务的总运行时间为 20 秒),但我看到只有一个 gulp 进程执行这 4 个任务。
我希望利用多核 CPU 来加速我的 gulp 构建。因此,问题是 - 有没有任何方法可以利用多个核心来完成 gulp 任务?我查看了“gulp-multi-process”,当针对如下所示的 gulpfile.js 运行“gulp multi”时,这确实会产生多个进程:
const { parallel } = require('gulp');
var gulp = require('gulp');
var gulpMultiProcess = require('gulp-multi-process');
function javascript(cb) {
setTimeout(function() {
console.log("Javascript task!")
cb();
}, 20000);
}
function css(cb) {
setTimeout(function() {
console.log("CSS task!")
cb();
}, 10000);
}
function prettify(cb) {
setTimeout(function() {
console.log("Prettify task!")
cb();
}, 15000);
}
function colorize(cb) {
setTimeout(function() {
console.log("Colorize task!")
cb();
}, 5000);
}
gulp.task("javascript",javascript);
gulp.task("css",css);
gulp.task("prettify",prettify);
gulp.task("colorize",colorize);
function defaultTask(cb) {
// place code for your default task here
cb();
}
gulp.task('multi', function(cb) {
// task1 and task2 will run in different processes
return gulpMultiProcess(["javascript","css","prettify","colorize"], cb);
});
exports.default = defaultTask
exports.build = parallel(javascript, css, prettify,colorize);
...但是 gulp 还有其他选择来启动多个进程吗?
【问题讨论】:
标签: gulp