Gulp和run-sequence错误:任务未配置为gulp上的任务

时间:2014-06-11 13:59:16

标签: gulp

我正在尝试将run-sequence添加到我的gulp工作流程中,但每次尝试执行我使用run-sequence的任务时都会出现此错误:

任务未配置为gulp上的任务。

根据运行顺序的来源,这是由test

引起的
if (isTask && !gulp.hasTask(t)) {
    throw new Error("Task "+t+" is not configured as a task on gulp.");
}

我的任务被分成多个文件,如果我执行单个任务或具有依赖性的任务,一切正常,我唯一的错误就是这个:

'use strict';

var gulp = require('gulp'),
    runSequence = require('run-sequence');

module.exports = gulp.task('default', function() {
    if (release) {
        runSequence(
            'clean',
            ['index', 'styles', 'images', 'fonts', 'templates'],
            'browserify',
            'minify'
        );
    } else {
        runSequence(
            'clean',
            ['index', 'styles', 'images', 'fonts', 'templates'],
            ['watchify', 'watch']
        );
    }
});

测试不应该失败,因为当我尝试在runSequence函数之前添加这段代码时,对于我尝试在函数中执行的每个任务,它都输出为true:

console.log(gulp.hasTask('clean'); // Output true
runSequence(
    'clean',
    ['index', 'styles', 'images', 'fonts', 'templates'],
    ['watchify', 'watch']
);

但我仍然有错误: 任务清理未配置为gulp上的任务。 如果我从数组中删除'clean',它将在下一个任务中失败: 任务索引未配置为gulp上的任务。

如果有人知道这里发生了什么......

感谢您的帮助。

4 个答案:

答案 0 :(得分:15)

您的run-sequence是全球安装还是本地安装?

尝试在本地安装,这解决了我的问题!

npm install run-sequence

答案 1 :(得分:5)

我遇到了同样的问题,我的解决办法是在雅各布托马森提到的我的要求声明中这样做。

var runSequence = require('run-sequence').use(gulp);

答案 2 :(得分:2)

问题在于run-sequence在使用依赖项构建自身方面做得不好。由于gulp是一个依赖项,它应该把它作为一个参数,你需要提供给构造函数。不幸的是,它的编写方式很难做到这一点。有一个.use()方法,您可以链接到模块的require()语句,以定义gulp模块,但即使这是一厢情愿的想法,假设在gulp模块的地方正在进行require语句的引导是可用的。

我刚刚对它进行了重写。它与当前版本不同,因为API已经发生了一些变化。您需要构建模块,将其分配给变量并调用run()方法,传递当前文档中描述的任务和选项。

你可以在这里看看......

https://github.com/oojacoboo/run-sequence

如果有人想要,我可以更新自述文件,可能会给它另一个非冲突的名称并清理一些东西。我意识到重写可能比某些人更喜欢分歧,但依赖关系现在至少可以得到妥善处理。

答案 3 :(得分:0)

如果您需要拆分成多个文件,请使用此配方。 https://github.com/gulpjs/gulp/blob/master/docs/recipes/split-tasks-across-multiple-files.md

似乎应删除module.exports =

'use strict';

var gulp = require('gulp'),
  runSequence = require('run-sequence');

gulp.task('default', function() {
  ...
});