我正在尝试构建我的框架,使其更加健壮和可重用。
/gulp-framework
tasks/
_assets.js
index.js
package.json
node_modules/
/project-a
gulpfile.js
configuration.js
在index.js
中,我使用require(./tasks/_assets.js)(gulp, config)
;
我在 _assets.js
中有一个控制台日志,我可以在输出中看到,如果我运行 gulp -T 我会得到响应:
[08:17:44] ├── assets
[08:17:44] ├── build
[08:17:44] └─┬ default
[08:17:44] └── build
构建只是使用run-sequence()
运行 Assets 。显然,任务是在这里注册的,但是如果我只是在 cmd 中运行 gulp,我会得到:
Starting 'build'...
[08:18:19] 'build' errored after 1.76 ms
[08:18:19] Error: Task assets is not configured as a task on gulp. If this is a submodule, you may need to use require('run-sequence').use(gulp).
我尝试过使用 use gulp 但这只会产生更多错误。
有什么想法吗?
最佳答案
我发现模块 run-sequence
准确地告诉了我需要做什么,尽管我没有意识到这是特定于 run-sequence
模块的。
无论我在子模块中使用run-sequence
,我都需要执行以下操作:
module.exports = function(gulp, config) {
var runSequence = require('run-sequence').use(gulp);
}
来自run-sequence :
在 gulp 子模块中使用
如果您有一个复杂的 gulp 设置,并且您的任务分散在不同的文件中,您可能会收到运行序列无法找到您的任务的错误。在这种情况下,您可以配置 run-sequence 以查看子模块内的 gulp,如下所示:
// submodule tasks/mygulptask.js
var gulp = require('gulp'),
// might be a different instance than the toplevel one
// this uses the gulp you provide
runSequence = require('run-sequence').use(gulp);
// ...and then use normally
runSequence('subtask1', 'subtask2');
关于node.js - 任务似乎已注册但无法运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380286/