如何在gulp任务之间共享参数?

时间:2016-01-04 13:47:54

标签: node.js gulp gulp-watch

我想分享一组描述当前执行流程的参数。这就是我现在这样做的方式:

let taskError;

gulp.task('pre-watch', () => {
    taskError = false; 
});

gulp.task('task-a', () => {
    console.log('OK');
});

gulp.task('task-b', () => {
    console.log('Error');

    taskError = true;
});

gulp.task('task-c', () => {
    console.log('Error', taskError);

    if (!taskError) {
        throw new Error('Was expecting taskError to be true.');
    }
});

gulp.task('watch', () => {
    gulp.watch('./**/*', [
        'pre-watch',
        'task-a',
        'task-b',
        'task-c'
    ]); 
});

这种方法很有效,直到我们遇到并行问题,即

  • gulp.watch检测到了更改。
  • pre-watch已完成,task-a已完成,task-b已完成...
  • gulp.watch检测到了更改。
  • pre-watch重置taskError
  • task-c抛出Error

有没有办法在当前任务执行流程中传递参数?

1 个答案:

答案 0 :(得分:0)

正如你发现的那样,gulp任务默认并行运行。 有史以来最好的gulp插件是run-sequence

npm i -SD run-sequence

https://www.npmjs.com/package/run-sequence

非常受欢迎,每天下载4k +。它是一个临时解决方案,直到gulp 4被释放,这将更好地控制并行性。

它允许你做...

'任务1', ['task2','task3'], 'task4'

那是......

运行任务1

然后并行运行任务2和任务3

当2和3都完成后再运行任务4

这可以解决您的并行问题:)

不确定这是分享参数的最佳方式。