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-app
的gulp
实例传递给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() { });