質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

3114閲覧

gulpのタスクで呼び出し元の違いで処理を条件分岐するにはどうしたらよいでしょう

forsb

総合スコア52

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

4クリップ

投稿2015/02/17 05:04

lang

1gulp.task("html", function() { 2 // 何らかの処理 3 // releaseから呼び出される時だけの処理をここに加えたい 4}); 5 6gulp.task("build", ['clean'], function(cb){ 7 runSequence('jade', 'clear', ['js', 'sass', 'html', 'img'], cb); 8}); 9 10gulp.task("release", ['clean'], function(cb){ 11 runSequence('jade', 'clear', ['js', 'sass', 'html', 'img'], cb); 12});

例えば同じhtmlというタスクでも、releaseタスクから呼び出される時のみ実行したい処理があるとします。

呼び出し元のタスクを判定して分岐するやり方がわからない場合、他の大部分が同じ処理でもhtml:releaseのようなタスクを新たに作ってreleaseではそちらを呼び出す、というような無駄の多い手法を取らざるを得ません。

呼び出し元のタスクを判定して分岐させる、なにかうまい方法はあるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

かなり古い質問ですので既に自己解決済みかもしれませんが、私自身もこのやり方を知りたかったので調べてみました。

  • run-sequence (^1.1.2)
  • gulp.run (非推奨)

上記2つで調べた結果、
実行されたタスク関数内のthisseqというプロパティがあり、これが配列で実行元のタスク名をもっていましたので、この値で判別すれば処理を分けることができそうです。

var gulp = require("gulp"), // 中略 runSequence = require('run-sequence'); gulp.task("html", function() { console.log('this.seq:', this.seq); if( this.seq && this.seq.indexOf('release') >= 0 ) { // releaseから呼び出される時だけの処理 console.log('>>> Rlease task'); } if( this.seq && this.seq.indexOf('build') >= 0 ) { // buildから呼び出される時だけの処理 console.log('>>> Build task'); } }); gulp.task("build", ['clean'], function(cb){ runSequence('jade', 'clear', ['js', 'sass', 'html', 'img'], cb); // gulp.run( ['js', 'sass', 'html', 'img'] ); ... これでも問題ありませんでした }); gulp.task("release", ['clean'], function(cb){ runSequence('jade', 'clear', ['js', 'sass', 'html', 'img'], cb); // gulp.run( ['js', 'sass', 'html', 'img'] ); ... これでも問題ありませんでした });

最初runSequenceはgulp-run-sequenceかと思ったのですが、
gulp-run-sequenceは内部的にgulp.run()を使ってせいか非推奨のメッセージが出てしまうのですね。

投稿2015/08/31 08:47

KiKiKi_KiKi

総合スコア596

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

forsb

2015/08/31 09:03

ずっと知りたかったので感謝です!ありがとうございます!
KiKiKi_KiKi

2015/08/31 11:04

僕も処理分けとかしたかったので、良い機会でした! ただGulpの仕様が変わってしまうとダメになる可能性がありますので、その点はご留意ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問