シンボリックリンクのあるディレクトリでgulp watchして痛い目を見たお話
はじめに
件名通りです。
痛い目を見ないように、備忘録も兼ねて。
gulp watchでファイルの変更を監視しよう
タイトルのように思った時が私にもありました( ˘ω˘)
watch対象のディレクトリ構成はこちら
test
├─foo
| └─ foo.txt
|
├─bar(fooへのsymlink)
|
└─test.txt
とってもシンプルな構成です。
watch開始ッ!
gulpfile.js
const gulp = require('gulp');
gulp.task('default', () => {
const watcher = gulp.watch('test/*');
watcher.on('change', function (event) {
console.log(event.path);
})
});
const gulp = require('gulp');
gulp.task('default', () => {
const watcher = gulp.watch('test/*');
watcher.on('change', function (event) {
console.log(event.path);
})
});
これをnpmから起動してtest配下をwatchしてみました。
変更があればパスを表示するだけのはず……!
test.txtの更新
touch test/test.txt
touch test/test.txt
touchコマンドで更新日時を書き換えてみます。
さて、gulpのwatchの結果はというと……
$ gulp
[23:33:48] Starting 'default'...
[23:33:48] Finished 'default' after 7.42 ms
/xxx/test/test.txt
/xxx/test/bar
test.txtを更新していないのにbarもconsole.logとして対象に出ているッ!?
今回はconsole.logなんですが、barディレクトリのpathをファイル操作系の関数とかに突っ込んでいたりすると……
まぁ、タイトルが痛い目を見たお話というところで察して下さい。
考察
gulpは特にバグっていないとして
symlinkのあるディレクトリでファイルを更新すると、symlink側の更新?リンクの再生成か何かが起きる?
そのためにgulpのwatchイベントに引っかかる。
……とかなのだろうか?
このあたり、原因や理由が書かれているドキュメント的なものがあれば欲しい……
どなたかご存知でしたら
Author And Source
この問題について(シンボリックリンクのあるディレクトリでgulp watchして痛い目を見たお話), 我々は、より多くの情報をここで見つけました https://qiita.com/fumihiko-hidaka/items/1272272e5e0ef0245e74著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .