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

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

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

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

Q&A

解決済

2回答

3453閲覧

gulp.watchがうまく動作してくれない

退会済みユーザー

退会済みユーザー

総合スコア0

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

gulp

gulpは、Node.jsをベースとしたタスク自動化ツールの一つ。ストリームでファイルを処理することが特徴です。CSSプリプロセッサの使用時のコンパイルや、CSS・JavaScriptファイルの圧縮・結合などを自動的に行うことができます。

1グッド

0クリップ

投稿2016/07/09 08:58

編集2016/07/09 09:03

gulpでTypeScriptファイルの変更をgulp.watch()で監視して、ファイルに変更があったら"build"というタスクを実行させたいのですが、いまいち上手く動作してくれません。

最初にTypeScriptのファイルに変更があった時は正常に"build"タスクが実行されるのですが、それ以降はTypeScriptのファイルに変更があっても、"build"タスクが実行してくれません。

gulpはまだ不慣れで直接処理、並列処理の書き方やwatchの使い方の理解があやふやなのですが、
このコードのどこがおかしくて、どういう書き方が適切なのでしょうか?

ちなみに、"build"タスクでは、gulpのrun-sequenceモジュールを使って、
直接処理と並列処理を行っています(行っているつもりです)

ご教授頂ければ幸いです。よろしくお願い致します。

JavaScript

1var gulp = require("gulp"); 2var typescript = require("gulp-typescript"); 3var plumber = require('gulp-plumber'); 4var runSequence = require("run-sequence"); 5var browserify = require("browserify"); 6var source = require("vinyl-source-stream"); 7 8gulp.task("compileTypeScript", function() { 9 10 return gulp.src("./TypeScript/*.ts") 11 .pipe(plumber()) 12 .pipe(typescript()) 13 .on("error", function(error) { 14 console.log(error.message) 15 }) 16 .pipe(gulp.dest("./JavaScript")); 17 18 19}); 20 21 22gulp.task("browserify", function() { 23 24 return browserify({entries: ["./JavaScript/Main.js"]}) 25 .bundle() 26 .pipe(source("Main.bundle.js")) //出力先ファイル名 27 .pipe(gulp.dest("./build")); //出力先ディレクトリ 28 29}); 30 31 32gulp.task("log", function() { 33 return console.log("successfully done!!"); 34}); 35 36 37 38gulp.task("watch", function() { 39 gulp.watch("./Typescript/*.ts", ["build"]); 40 41}); 42 43 44gulp.task("build", function(callback) { 45 46 runSequence( 47 ["compileTypeScript"], //配列に入っているタスクは並列処理 48 "browserify", //直接処理 49 "log" //直接処理 50 ); 51 52}); 53 54 55gulp.task("default", ["watch"]);
harashow1701👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

情報が足りなかったので実際にプロジェクト作って動かして確認してみました。
このようにログさえあればおかしい所が検討出来るようになるので是非ログも添える習慣付けをお願いします。

Bash

1$ gulp 2(node:77657) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version. 3[10:35:46] Using gulpfile ~/private/teratail/node-q/gulpfile.js 4[10:35:46] Starting 'watch'... 5[10:35:46] Finished 'watch' after 13 ms 6[10:35:46] Starting 'default'... 7[10:35:46] Finished 'default' after 35 μs 8[10:35:58] Starting 'build'... 9[10:35:58] Starting 'compileTypeScript'... 10[10:35:59] Finished 'compileTypeScript' after 1.16 s 11[10:35:59] Starting 'browserify'... 12[10:35:59] Finished 'browserify' after 16 ms 13[10:35:59] Starting 'log'... 14successfully done!! 15[10:35:59] Finished 'log' after 75 μs

上記おかしい所が2点

  • fsがなんかWarning吐いてる → 最近のgulp.watchは最新のNode.jsからすると古いライブラリを使用しているようです。
  • buildタスクが終わってない

buildタスク内ですが、callbackを関数内部で宣言しているにも関わらず呼び出してないですね。
このように修正することで動くようになりました。

JavaScript

1gulp.task("build", function(callback) { 2 3 runSequence( 4 ["compileTypeScript"], //配列に入っているタスクは並列処理 5 "browserify", //直接処理 6 "log", //直接処理 7 callback 8 ); 9 10});

Bash

1$ gulp 2(node:77687) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version. 3[10:37:17] Using gulpfile ~/private/teratail/node-q/gulpfile.js 4[10:37:17] Starting 'watch'... 5[10:37:17] Finished 'watch' after 13 ms 6[10:37:17] Starting 'default'... 7[10:37:17] Finished 'default' after 32 μs 8[10:37:30] Starting 'build'... 9[10:37:30] Starting 'compileTypeScript'... 10[10:37:31] Finished 'compileTypeScript' after 1.08 s 11[10:37:31] Starting 'browserify'... 12[10:37:31] Finished 'browserify' after 17 ms 13[10:37:31] Starting 'log'... 14successfully done!! 15[10:37:31] Finished 'log' after 90 μs 16[10:37:31] Finished 'build' after 1.1 s 17[10:37:39] Starting 'build'... 18[10:37:39] Starting 'compileTypeScript'... 19[10:37:40] Finished 'compileTypeScript' after 530 ms 20[10:37:40] Starting 'browserify'... 21[10:37:40] Finished 'browserify' after 5.47 ms 22[10:37:40] Starting 'log'... 23successfully done!! 24[10:37:40] Finished 'log' after 24 μs 25[10:37:40] Finished 'build' after 537 ms

投稿2016/07/10 01:43

miyabi-sun

総合スコア21158

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

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

退会済みユーザー

退会済みユーザー

2016/07/10 02:54

ご回答頂きましてありがとうございます!自己解決報告の投稿と時間差で投稿頂いていたみたいで大変恐縮です。 ご指摘の通り、callbackのところが問題箇所でした!(自己解決報告の回答には修正箇所無かったと書いてますが、言われてみればそこは修正してました) 後ほど、PCからアクセスする際にベストアンサーを切り替え致します。 プロジェクトまで作成して試して頂いて有難うございました!
guest

0

自己解決致しました。

問題解決のため、コードを修正したりはしましたが、結果的には修正する必要ななく、掲載していたコードで問題なく動作致しました。

エディターの不具合だったのか何なのか分からないのですが、時間が解決致しました。---

自己解決致しました。

■追記
自己解決報告の回答を投稿後、時間差でmiyabi-sunさんからご回答を頂いていたので、
miyabi-sunの回答をベストアンサーに変更致しました。

また、結果的にコードを修正することなく不具合部分は解消されたと上記に書きましたが、
miyabi-sunの回答にある通り、callback部分を修正時に加えていたことを思い出しました。

投稿2016/07/10 01:35

編集2016/07/10 04:47
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問