gulp.watch
でjavascriptのファイルを監視。変更があった時下記のような処理を行わせたいです。
JSHint
でチェック- 問題がなければ
concat
などで結合 - 全てのタスクが終了したら
browser-sync
で画面をリロード
grupfile.jsを作成したのですが、下記の問題が解消できておりません。
a. JSHint
で問題が検出されても次のタスクを実行してしまう
b. JSHint
で問題があると1度はbrowser-sync
でリドードできるが、
その後javascriptファイルを変更してもタスクが実行されなくなってしまう。
(javascriptだけwatchされなくなる?)
json
1 "devDependencies": { 2 "browser-sync": "^2.9.1", 3 "gulp": "^3.9.0", 4 "gulp-concat": "^2.6.0", 5 "gulp-if": "^1.2.5", 6 "gulp-jshint": "^1.11.2", 7 "gulp-load-plugins": "^0.10.0", 8 "jshint-stylish": "^2.0.1", 9 "main-bower-files": "^2.9.0", 10 "run-sequence": "^1.1.2" 11 }
gulpfile.js
javascript
1var gulp = require("gulp"), 2 $ = require('gulp-load-plugins')(), 3 browserSync = require('browser-sync'), 4 runSequence = require('run-sequence'), 5 concat = require("gulp-concat"), 6 jshint = require("gulp-jshint"), 7 reload = browserSync.reload; 8 9gulp.task('jshint', function () { 10 return gulp.src(devDir + '/js/*.js') 11 .pipe( jshint() ) 12 .pipe( jshint.reporter('jshint-stylish') ) 13 .pipe( $.if(!browserSync.active, jshint.reporter('fail')) ); 14 // .pipe( reload({stream: true, once: true}) ); 15 // ↑ここにオプションを与えてリロードする処理を書けば 16 // JSHintでエラーがあっても watch されなくなることは無いが 17 // エラーの有無に関わらずリロードされてしまう 18}); 19 20gulp.task('concat.js', function(cb) { 21 return gulp.src(devDir + '/js/*.js') 22 .pipe( concat('main.js') ) 23 .pipe( gulp.dest( destDir + '/js' ) ); 24}); 25 26// Javascript Task 27gulp.task('js', function(cb) { 28 runSequence('jshint', 'concat.js', cb); 29 // runSequence('jshint', 'concat.js', reload); 30 // ↑ 最後にreloadのタスクを実行させるようにすると 31 // JSHintでエラーなどがあると、その後 gulp.task('js')が実行されなくなる 32 // リロードを別の gulp.task() を作って実行しようとしても同様 33 34 // runSequence('jshint', 'concat.js', reload, cb); 35 // ↑ エラーになり実行できない書き方 36}); 37 38// watch 39gulp.task('default', function() { 40 gulp.watch([devDir + '/js/*.js'], ['js']); 41});
タスクの最後にオプションを与えてリロードの処理を実行させるようにすれば、watchされなくなる問題は発生しないようなので、個人的にはJSHintで問題が検出されたら次のタスクを実行しないようにできれば、問題は解決できそうかなと思っています。
この問題の解決に至る事ができなかったので質問させて頂きました。
何卒よろしくお願いします。
[参考]
Web Starter Kit で JavaScript のライブラリを利用しようとしたらエラーで gulp のサーバーが止まってしまう場合の対応 - HAM MEDIA MEMO
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。