2016-03-24 22 views
1

私はプロジェクトを実行/構築するためにnode/gulpを使用しています。これらのプロジェクト全体で、私のgulpファイルは非常によく似ています。私はJava/Mavenのバックグラウンドから来ているので、私はsthを探していました。親gulpfileのように基本的なタスクを継承することができます(これはmavenの親pom.xmlで簡単に可能です)。gulp、parent gulpfile.jsのタスク継承

これはどうにかして暴風雨に陥っていますか、これを行うモジュールがあるのでしょうか、それとも自分自身を理解する必要がありますか?

ノードモジュールに何もせずに、自分の依存gulpファイルから必要な基本的なgulpタスクを提供することができます。このようなアプローチの経験はありますか?

BRは クリス

答えて

3

あなただけの子gulpfilesであなたの親gulpfileにgulpオブジェクトをエクスポートし、それを必要とする可能性がある:

プロジェクト/ 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 

EDIT:親gulpfileは、同じパッケージの一部でない場合は上記動作しません(例えば、 my-app)、あなたが依存している別のパッケージ(例:my-common-tasks)からのものです。その理由は、Node.jsのモジュール読み込みの仕方がgulpの2つのインスタンス(my-common-tasksに1つ、my-appに1つ)で終わるからです。タスクはmy-common-tasksのインスタンスで定義されますが、gulp CLIはインスタンス内のタスクをmy-appから探します。

代わりにあなたがmy-appからmy-common-tasksgulpインスタンスを渡す必要があります:

私-共通タスク/ gulpfile.js

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

私のアプリ/ gulpfile.js

var gulp = require('gulp'); 
require('my-common-tasks')(gulp); 

gulp.task('sub-task', [ 'common-task' ], function() { }); 
+0

はい、それは私が考えていたものです。しかし、私のプロジェクトは物理的に分かれています。だから、私は、親のgulpfileを単純なノードモジュールにパッケージングし、それをサブプロジェクトに依存して使用し、node_modulesから親のGulpタスクをロードすることを考えていたのです。それはあなたにとって確かな解決策のように聞こえるでしょうか? – cschuff

+0

ノード環境変数からデータをロードすることもできます。それはまた簡単だろう。 –

+0

@cschuff私の編集を参照してください。 –