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

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

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

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

gulp

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

解決済

Gulp JSHintでError Warningsが無い時だけ次のタスクを実行してリロードさせたい

KiKiKi_KiKi
KiKiKi_KiKi

総合スコア594

Node.js

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

gulp

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

1回答

0評価

0クリップ

2379閲覧

投稿2015/09/08 19:42

編集2015/09/08 19:51

gulp.watchでjavascriptのファイルを監視。変更があった時下記のような処理を行わせたいです。

  1. JSHintでチェック
  2. 問題がなければconcatなどで結合
  3. 全てのタスクが終了したらbrowser-syncで画面をリロード

grupfile.jsを作成したのですが、下記の問題が解消できておりません。
a. JSHintで問題が検出されても次のタスクを実行してしまう
b. JSHintで問題があると1度はbrowser-syncでリドードできるが、
その後javascriptファイルを変更してもタスクが実行されなくなってしまう。
(javascriptだけwatchされなくなる?)

json

"devDependencies": { "browser-sync": "^2.9.1", "gulp": "^3.9.0", "gulp-concat": "^2.6.0", "gulp-if": "^1.2.5", "gulp-jshint": "^1.11.2", "gulp-load-plugins": "^0.10.0", "jshint-stylish": "^2.0.1", "main-bower-files": "^2.9.0", "run-sequence": "^1.1.2" }

gulpfile.js

javascript

var gulp = require("gulp"), $ = require('gulp-load-plugins')(), browserSync = require('browser-sync'), runSequence = require('run-sequence'), concat = require("gulp-concat"), jshint = require("gulp-jshint"), reload = browserSync.reload; gulp.task('jshint', function () { return gulp.src(devDir + '/js/*.js') .pipe( jshint() ) .pipe( jshint.reporter('jshint-stylish') ) .pipe( $.if(!browserSync.active, jshint.reporter('fail')) ); // .pipe( reload({stream: true, once: true}) ); // ↑ここにオプションを与えてリロードする処理を書けば // JSHintでエラーがあっても watch されなくなることは無いが // エラーの有無に関わらずリロードされてしまう }); gulp.task('concat.js', function(cb) { return gulp.src(devDir + '/js/*.js') .pipe( concat('main.js') ) .pipe( gulp.dest( destDir + '/js' ) ); }); // Javascript Task gulp.task('js', function(cb) { runSequence('jshint', 'concat.js', cb); // runSequence('jshint', 'concat.js', reload); // ↑ 最後にreloadのタスクを実行させるようにすると // JSHintでエラーなどがあると、その後 gulp.task('js')が実行されなくなる // リロードを別の gulp.task() を作って実行しようとしても同様 // runSequence('jshint', 'concat.js', reload, cb); // ↑ エラーになり実行できない書き方 }); // watch gulp.task('default', function() { gulp.watch([devDir + '/js/*.js'], ['js']); });

タスクの最後にオプションを与えてリロードの処理を実行させるようにすれば、watchされなくなる問題は発生しないようなので、個人的にはJSHintで問題が検出されたら次のタスクを実行しないようにできれば、問題は解決できそうかなと思っています。
この問題の解決に至る事ができなかったので質問させて頂きました。
何卒よろしくお願いします。

[参考]
Web Starter Kit で JavaScript のライブラリを利用しようとしたらエラーで gulp のサーバーが止まってしまう場合の対応 - HAM MEDIA MEMO

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Node.js

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

gulp

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