gulp中父任务inheritancegulpfile.js

我正在使用node / gulp来运行/构build我的项目。 在这些项目中,我的咕噜声看起来非常相似。 由于我来自Java / Maven背景,所以我正在寻找某物。 像一个父gulpfile可以inheritance基本任务(这很容易与maven中的父pom.xml)。

这是不是成了一个吞噬,有没有模块做这个或我需要自己的数据呢?

我可以想到有一个节点模块没有做任何其他的事情,然后提供一个可以从他的依赖的吞咽文件需要的基本的吞咽任务。 有没有像这样的方法的经验?

BR Chris

您可以将gulp对象导出到您的父gulpfile中,然后在子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() { }); 

project/subproject目录运行subtask

 > 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 ),而是从另一个包,你依赖(如my-common-tasks )的一部分,上述将无法正常工作。 原因是Node.js中的模块加载方式起作用,最终得到两个gulp实例:一个在my-common-tasks ,另一个在my-app 。 您的任务将在my-common-tasks的实例中定义,但是gulp CLI将从my-app查找实例中的任务。

相反,您必须将my-appgulp实例传递给my-common-tasks

my-common-tasks / gulpfile.js

 module.exports = function(gulp) { gulp.task('common-task', function () { }); }; 

my-app / gulpfile.js

 var gulp = require('gulp'); require('my-common-tasks')(gulp); gulp.task('sub-task', [ 'common-task' ], function() { });