(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

Watchify と gulp.watch の相性が悪い?

次のような gulpfile.js 書くと watchify は動くけど、 gulp.watch の方は動かない。
数日悩んだけど、諦めて brawserify のタスクを動かす方で諦めている。 watchify で監視対象にしたファイルは watch 出来ないぽい?よく分からない。

function scripts(watch) {
  var files = glob.sync('./src/**/*.js'),
      config = { entries :files,
                 debug: watch, cache: {},
                 packageCache: {}, fullPaths: true },
      bundler = browserify(config),
      rebundle = function() {
        return bundler.bundle().
          pipe(source('main.js')).
          pipe(gulp.dest('./dist'));
      };

  bundler = watch ? watchify(bundler) : bundler;
  bundler.on('update', rebundle);
  return rebundle();
}

gulp.task('watchify', function(){
  return scripts(true);
});

gulp.task('watch', ['watchify'], function(){
  gulp.watch('./src/**/*.js', ['jshint']);
});

追記

どうもこの辺が関係ありそう。あとで読む
substack/node-browserify · GitHub
今、 JS のライブラリ書こうとしててこの問題にぶつかったので、 main.js*1 の置き場所と関係ありそう。

ちょっと色々見直そう(そもそも論として今やろうとしていることに watchify はいらないのかもしれない。))。

*1:と見做す file