심볼릭 링크가있는 디렉토리에서 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);
  })
});

이것을 npm에서 시작하여 test 부하를 watch 해 보았습니다.
변경이 있으면 패스를 표시할 뿐일 것입니다…

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 이벤트에 걸린다.

… … 라든지일까?

이 근처, 원인이나 이유가 쓰여져 있는 문서적인 것이 있으면 좋겠다…
누군가를 알고 있다면

좋은 웹페이지 즐겨찾기