2014-06-19 1 views
8

gulp-imagemin을 사용하여 이미지를 압축하는 gulp 작업이 있습니다. 이 디렉터리에 새 파일을 추가 할 때이 작업을 압축하는 것이 좋습니다. 나는 그걸 읽고 gulp.watch doesn't trigger on new files을 읽었습니다. 그래서 나는 그것을 gulp-watch로 시도해야합니다.새로 추가 한 파일이 내 꿀꺽 꿀꺽 작업을 트리거하지 않는 이유는 무엇입니까?

gulp.task('images', function() { 
    watch({glob: './source/images/*'}, function (files) { 
    return files 
     .pipe(plumber()) 
     .pipe(imagemin({ 
     progressive: true, 
     interlaced: true 
     })) 
     .pipe(gulp.dest('./www')); 
    }); 
}); 

이것은 첫 번째 실행시 gulp.watch와 동일하게 작동하지만 디렉토리에 새 이미지를 추가해도 아무런 변화가 없습니다. 그러나 기존 파일을 덮어 쓰면 작업이 다시 실행되므로 다르게 동작합니다.

gulp-watch에 대한 문서는이 "일괄 처리 모드"라고하며 파일 단위로 작업을 실행할 수도 있다고 했으므로이 방법도 시도했습니다.

gulp.task('images', function() { 
    gulp.src('./source/images/*') 
    .pipe(watch()) 
    .pipe(plumber()) 
    .pipe(imagemin({ 
     progressive: true, 
     interlaced: true 
    })) 
    .pipe(gulp.dest('./www')); 
}); 

아무 것도 변경되지 않았습니다. 이미지 디렉토리에 작업을 트리거하는 파일을 추가하지 않는 이유는 무엇입니까?

+0

가능한 중복 [의 사이더가 신규 또는 삭제 된 파일에 대해 트리거하지 gulp.watch?] (http://stackoverflow.com/questions/22391527/gulps-gulp-watch-not-triggered -for-new-or-deleted-files) – Rimian

답변

8

대부분 이러한 종류의 질문은 gaze 패키지 및 내부 프로세스로 리디렉션되어 운영 체제에서 복잡한 시청 절차를 실행합니다.

var gulp = require('gulp'); 
var watch = require('gulp-watch'); 
var imagemin = require('gulp-imagemin'); 

gulp.task('default', function() { 
    watch({glob: 'images/**/*'}, function (files) { 
     files.pipe(imagemin({ 
     progressive: true, 
     interlaced: true 
     })) 
     .pipe(gulp.dest('./www')); 
    }); 
}); 

을하지만 빈 이미지 디렉토리가있을 때이는 경우가 해결되지 채우기 : 시선이 이미지 디렉토리에있는 모든 (등 신규) 파일을 볼 수 있도록이 경우, 옵션을 glob에 images/**/*을 통과해야한다. 그들을보고 싶다면 ['images', 'images/**/*']을 glob에 넘겨 주면 처음에는 비어 있던 디렉토리를 볼 수 있습니다.

p.s. 또한이 경우에는 gulp-plumber이 필요하지 않습니다. 시계가 imagemin을 사용할 때마다 imagemin이 오류를 일으키는 경우에도 함수가 다시 실행되기 때문입니다. gulp.watch에 추가 인수 {cwd:'./'} 추가

+3

고마워! 소스/이미지 /에서 "./"을 삭제했으며 현재 작동합니다! – arkanciscan

15

은 나를 위해 일한 :

gulp.watch('src/js/**/*.js',{cwd:'./'},['scripts']); 

2 일을이 작업 얻을 :

1하는 파일/폴더 패턴의 ./ 피를

./의 값은 cwd

행운을 빕니다.

참조 : - https://stackoverflow.com/a/34346524/4742733