我正在使用node / gulp来运行/构建我的项目。在这些项目中,我的gulpfiles看起来非常相似。由于我来自Java / Maven背景,我一直在寻找......就像父gulpfile一样,可以继承基本任务(maven中的父pom.xml很容易实现)。
这是不是以某种方式构成了gulp,是否有模块这样做或者我需要自己解决这个问题吗?
我可以想到让节点模块不做任何其他工作,然后提供可以从他的依赖gulp文件中获取的基本gulp任务。有关这种方法的经验吗?
BR 克里斯
答案 0 :(得分:3)
您可以在父gulpfile中导出gulp
对象,然后在子gulpfiles中要求它:
<强>项目/ gulpfile.js:强>
var gulp = require('gulp');
gulp.task('commontask', function () { });
module.exports = gulp;
<强>项目/子项目/ gulpfile.js:强>
var gulp = require('../gulpfile.js');
gulp.task('subtask', [ 'commontask' ], function() { });
从subtask
目录运行project/subproject
:
> gulp subtask
[12:38:05] Using gulpfile ~/project/subproject/gulpfile.js
[12:38:05] Starting 'commontask'...
[12:38:05] Finished 'commontask' after 50 μs
[12:38:05] Starting 'subtask'...
[12:38:05] Finished 'subtask' after 20 μs
编辑:如果父gulpfile不是同一个软件包的一部分(例如my-app
),而是来自您依赖的另一个软件包(例如{ {1}})。原因是Node.js中模块加载的方式有效,最终得到两个my-common-tasks
实例:gulp
中的一个和my-common-tasks
中的一个。您的任务将在my-app
的实例中定义,但my-common-tasks
CLI将从gulp
查找实例中的任务。
相反,您必须将my-app
实例从gulp
传递到my-app
:
我常见任务/ gulpfile.js 强>:
my-common-tasks
我应用内/ gulpfile.js 强>:
module.exports = function(gulp) {
gulp.task('common-task', function () { });
};