gulp中的任务继承,父gulpfile.js

时间:2016-03-24 10:57:57

标签: node.js npm gulp

我正在使用node / gulp来运行/构建我的项目。在这些项目中,我的gulpfiles看起来非常相似。由于我来自Java / Maven背景,我一直在寻找......就像父gulpfile一样,可以继承基本任务(maven中的父pom.xml很容易实现)。

这是不是以某种方式构成了gulp,是否有模块这样做或者我需要自己解决这个问题吗?

我可以想到让节点模块不做任何其他工作,然后提供可以从他的依赖gulp文件中获取的基本gulp任务。有关这种方法的经验吗?

BR 克里斯

1 个答案:

答案 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 () { });
};