2014-06-17 2 views
0

Gulp를 사용하여 내 소스 변경 사항을보고 컴파일하고, 보풀을 만들고, 내 앱을 다시로드하려고합니다.꿀꺽 꿀꺽 거리는 소리에 어떻게 필터링 된 파일 집합을보고 작업을 호출합니까?

gulp.watch는 리소스 필터링을 허용하지 않으므로 spec/test 파일을 업데이트하면 모든 것이 다시로드됩니다. 예를 들어 : 내 이해 꿀꺽 시계에서

jsSrc = ['!./app/**/*spec.js', './app/**/*.js']  

gulp.task('watch', function() { 
    gulp.watch(jsSrc, ['scripts', 'jsLint', 'reload']); 
}); 

내가 다른 작업을 트리거 않는 그러나 방법, 자원의 필터링 할 수 있습니다.

gulp.task('watch', function() { 
    gulp.src(jsSrc) 
    .pipe(require('gulp-watch')()) 
    // how do I call tasks? ['scripts', 'jsLint', 'reload'] 
}); 

답변

0
gulp.task('scripts', function(event) { 
    //event.path (changed file) 
    //... 
}); 

gulp.task('reload', function() { //... }); 

gulp.task('watch', function() { 
    gulp.watch(jsSrc, 
     //array of tasks to be executed when a file of jsSrc change 
     ['scripts', 'reload'] 
    ); 
}); 
0

당신은하지 않습니다. gulp-watch은 모든 파일을 내보내고 끝나지 않는 스트림입니다. 그런 다음, 변경된 모든 파일에 대해 다시 방출합니다. 이 작업을 (직접적으로) 트리거 할 수는 없습니다.

end을 방출하지 않으며 "컨텍스트 외부"라는 단일 파일을 얻으므로이 플러그인은 gulp.watch보다 약간 어렵 기 때문에 전체 작업을 다시 트리거합니다.

말했다 것보다, 나는 보통

gulp = require("gulp"); 

gulp.task('a', function() { console.log('a'); }); 
gulp.task('b', function() { console.log('b'); }); 

gulp.task('default', ['a','b'], function(){ 
    gulp.watch(['**/*.js','!**/foo.js'], ['a']); 
    gulp.watch(['**/*.css','!**/foo.css'], ['b']); 
}); 

처럼 당신이 'foo.js'을 무시하는이 방법을 설정하지만, 다른 모든의 .js에 대한 실행 파일 'A', B에 대한 동일.

glob 구문을 보려면 https://github.com/isaacs/minimatch을 참조하십시오.