【发布时间】:2017-08-21 00:28:39
【问题描述】:
标题可能听起来有点含糊,但这里有一个问题示例。假设我们有ModuleA、ModuleB和ModuleC三个模块,那么ModuleA依赖于ModuleB 和 ModuleB 依赖于 ModuleC。当我们需要针对 ModuleA 运行任务时,我们通常还需要针对其依赖项运行一些任务 - ModuleB 和 ModuleC,这就是 gulp -submodule 开始发挥作用。 gulp-submodule 让我们定义依赖模块的任务与其依赖项之间的依赖关系,以便依赖模块的任务触发其依赖项的适当任务。
如果我们有一个扁平的结构,这很好用,即 SomeModule 依赖于一堆没有自己依赖关系的其他模块。但是,一旦这些依赖项中的任何一个有了自己的依赖项,整个生态系统就会崩溃,并显示一条晦涩的错误消息,告知 gulp 无法找到某个任务。
这是演示代码。要在本地环境中进行测试,必须至少将 gulp 作为全局包安装,并将 gulp 和 gulp-submodule 作为项目的本地包安装。
module-a.gulpfile.js
const gulp = require("gulp");
require("gulp-submodule")(gulp);
gulp.submodule("module-b", {filepath: "module-b.gulpfile.js"});
gulp.task("default", ["module-b:default"], () => {
console.log("Running task 'default' for module 'module-a'...");
});
module-b.gulpfile.js
const gulp = require("gulp");
require("gulp-submodule")(gulp);
gulp.submodule("module-c", {filepath: "module-c.gulpfile.js"});
gulp.task("default", ["module-c:default"], () => {
console.log("Running task 'default' for module 'module-b'...");
});
module-c.gulpfile.js
const gulp = require("gulp");
gulp.task("default", [], () => {
console.log("Running task 'default' for module 'module-c'...");
});
在 module-a.gulpfile.js 上运行任务 'default' 后,您会得到类似于以下内容的输出:
gulp --gulpfile 模块-a.gulpfile.js
[07:15:27] 使用 gulpfile 模块-a.gulpfile.js
[07:15:27] 任务 'module-b:module-c:default' 不在您的 gulpfile 中
[07:15:27] 请检查文档以了解正确的 gulpfile 格式
正如人们可能注意到的那样,gulp 正在寻找一个名为“module-b:module-c:default”的特定任务,尽管在任何项目文件中都没有定义或引用该名称的任务。
【问题讨论】:
标签: javascript node.js gulp