あなただけの子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-tasks
にgulp
インスタンスを渡す必要があります:
私-共通タスク/ 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() { });
はい、それは私が考えていたものです。しかし、私のプロジェクトは物理的に分かれています。だから、私は、親のgulpfileを単純なノードモジュールにパッケージングし、それをサブプロジェクトに依存して使用し、node_modulesから親のGulpタスクをロードすることを考えていたのです。それはあなたにとって確かな解決策のように聞こえるでしょうか? – cschuff
ノード環境変数からデータをロードすることもできます。それはまた簡単だろう。 –
@cschuff私の編集を参照してください。 –