2014-09-18 2 views
3

gulp 빌드 파일에 watch 작업을 사용하는 것이 유용합니다. 필자의 경우에는 php 디렉토리에 변화가 있고 lints/copy가 변경되면 JS 디렉토리가 연결되고 복사되고 SASS는 변경시 CSS로 컴파일됩니다.git 브랜치가 변경 될 때 gulp watch를 다시 시작하는 방법

실행중인 시계 작업으로 다른 git 브랜치를 체크 아웃하면 문자 그대로 수백 개의 파일이 변경되므로 예상대로 실행되지 않습니다. 해결할 수있는 한 가지 문제는 watch이 일반적인 작업을 트리거한다는 것입니다. PHP는 예를 들어 변경된 PHP 파일뿐만 아니라 모든 PHP 파일을 다시 보완하고 복사합니다. 따라서 50 개의 파일이 변경되면 전체 스택이 50 번 반복됩니다. JS (종속성으로 인해)와 SASS (나침반을 실행하므로 모든 파일이 변경된 것으로 간주되기 때문에)에 대한 Ditto.

현재 내 해결책은 (Sublime Gulp을 사용하여 실행중인) 내 watch 작업을 죽인 다음 새 분기를 체크 아웃 한 다음 다시 실행하는 것입니다. 나는 어떤 해결책도 Sublime Gulp 플러그인을 수정해야 할 것이라고 생각했거나 그것을 사용하지 못하게했다. - 바로 가기가있어서 내 터미널의 배경에서 watch 태스크를 실행하고 볼 수있게 해 주면 좋을 것이다. 출력하지만 그것을 강제로하지 않습니다.

나는 git에 후크가 있다는 것을 알고 있으므로 다른 솔루션이 임시 작업으로 작동 할 수있는 파일을 생성하는 것으로 보일 수도 있습니다. 정지 또는 기타 유사한 작업에 서명하십시오.

누구나 watch을 사용하여 비슷한 문제가 발생했는데 해결 방법을 제안 하시겠습니까?

+0

'gulp-changed'또는'gulp-newer'가 문제를 해결하지 않습니까? – Namek

답변

7

Gulp.js, watch task runs twice when saving files에 대한 답변은 @Mushr00m이며, gulp.watch()으로 전달할 수있는 debounceDelay 옵션이 있습니다.

debounceDelay {정수} 지연이 긴 모든 변경 사항이 동시에 발생으로 같이 같은 파일/이벤트 한마디로

에 대한 연속라는 이벤트의 debounceDelay가 대기에 대한 트리거하기 전에 작업을 보았습니다. 내 경험에 의하면, git은 보통 꽤 빠르기 때문에, debounceDelay은 아마 500 또는 1000으로 설정할 수있다. 개발 워크 플로우에 큰 영향을 미치지 않는다.

예 :

gulp.watch('/**/*.less', {debounceDelay: 2000}, ['less']); 

나는이 문서를 통해 파고 될 확인할 수 있었다. 실제 기능은 gaze에서 제공됩니다.

4

내 수습생을 위해 하위 프로세스를 설정하기 위해 forever-monitor을 사용하고 있으며 .git/HEAD을 모니터를 다시 시작하기위한 방아쇠로 볼 수 있음을 깨달았습니다.

return watch('./.git/HEAD', {name: 'Branch watcher'}, function(events, done) { 
    monitors.forEach(function(monitor) { 
    monitor.restart(); 
    }); 
}); 

쉽게 가지 변화를 실행하는 다른 코드로 내 monitor 관리를 대체 할 수 :

내 코드는 다음과 같습니다

return watch('./.git/HEAD', {name: 'Branch watcher'}, function(events, done) { 
    // Do what needs to be done on branch change 
}); 

다른 시계 실행이있는 경우, 그것은 것 forever-monitor과 같은 것을 사용하지 않고 재시작하기가 어렵습니다. 시스템 레벨에서 꿀풀 프로세스를 죽이면 브랜치 워처가 죽을 것이기 때문입니다. 나는 이것을 설정했지만 매우 원활하게 작동합니다.

+0

흥미 롭다. 나는 그것을 실험해야 할 것이다. – M1ke

관련 문제