我正在尝试将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上的任务。
如果有人知道这里发生了什么......
感谢您的帮助。
答案 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() {
...
});