2014-06-06 5 views
0

내 gulpfile은 Sass 파일에 대한 변경 사항을 감시하므로 lr 서버에 대해 새로 고침을 실행해야합니다. Sass가 각 변경 사항에 대해 컴파일되고 있기 때문에 watch 이벤트가 잘 작동하지만 브라우저가 새로 고쳐지지 않습니다. 나는 gulp-ruby-sass을 사용하여 Sass를 컴파일합니다.GulpJS : 저음 변경 사항을 반영하지 않는 라이브로드 (JS 변경 작업)

JS 파일이 브라우저 새로 고침을 실행하는 것과 거의 동일한 작업을 수행합니다. 정상적으로 작동합니다.

이하는 (축약 된) gulpfile.js입니다. 스크립트를으로 포함 시켰으므로 과 같은 방식으로 작동합니다. 작업을 수행해야합니다. 나는 새로운 플러그인과 노드 버번을 모두 제거 시도

var gulp = require('gulp'); 
var sass = require('gulp-ruby-sass'); 
var bourbon = require('node-bourbon').includePaths; 
var newer = require('gulp-newer'); 
var lr = require('tiny-lr'); 
var lrserver = lr(); 
var refresh = require('gulp-livereload'); 

gulp.task('scripts', ['vendorScripts', 'libScripts'], function() { 
    return gulp.src([paths.js]) 
     .pipe(newer(paths.destJS + '/script.js')) 
     .pipe(concat('script.js')) 
     .pipe(gulp.dest(paths.destJS)) 
     .pipe(refresh(lrserver)); 
}); 

gulp.task('styles', function() { 
    return gulp.src(paths.sass) 
     .pipe(newer(paths.destCSS)) 
     .pipe(sass({loadPath: require('node-bourbon').includePaths})) 
     .pipe(gulp.dest(paths.destCSS)) 
     .pipe(refresh(lrserver)); 
}); 

gulp.task('watch', function() { 
    gulp.watch(paths.jsAll, ['scripts']); 
    gulp.watch(paths.sass, ['styles']); 
    gulp.watch(paths.html, ['html']); 
    gulp.watch([paths.img, '!' + paths.app + '/**/images/sprites{,/**}'], ['images']); 
    gulp.watch(paths.sprites, ['sprites']); 
}); 

필요하지만이 문제에 영향을주지 않습니다.

:
gulp.task('goRefresh', ['styles'], function() { 
    return gulp.src([paths.app], { read: false }) 
     .pipe(refresh(lrserver)); 
}); 

는 그 다음 watch 작업의 말대꾸가보고 변경 :

자체가 먼저 styles 작업을 호출하는 새 작업을 만듭니다 soenguy의 의견에 대 한 응답에서 해결 방법으로

+0

'watch'없이 sass 작업을 다시 시도하고 livereload를 사용하거나 사용하지 않고'gulp styles'를 실행하려 했습니까? 먼저 제대로 작동하는지 확인하십시오. – soenguy

+0

올바른 CSS가 출력되기 때문에 'watch'가 올바르게 작동합니다. 'gulp-styles'를 실행하면 올바른 CSS가 다시 생성되지만 브라우저가 새로 고쳐지지 않습니다 (그러나'serve' 작업 (표시되지 않음)이 시작되지 않으므로 수행되지 않습니다). – Fisu

+1

문제가 발생하는 이유를 알 수 없습니다. 비록 내가 완벽하지는 않지만 시도 할 수있는 한가지는 css 파일을보고 리로드를위한 특정 작업 만 빌드하는 것입니다. sass 파일을 컴파일하면 css가 변경되고'livereload'를 실행할 수 있습니다. 다른 누군가가 더 나은 (그리고 작동하는 해결책을 찾을 때까지) 이것은 작업을 할 수 있습니다. 그게 내 마음에 오는 첫 번째 트릭이지만, 다른 사람들이이 작업을 할 수 있도록 주위를 둘러 볼 수있다. (예를 들어, 스타일 작업의 끝 부분에서'gulp.start '로'scripts' 태스크를 호출하는 것과 같이). – soenguy

답변

1

gulp.watch(paths.sass, ['goRefresh']); 

이것은 이상적인 솔루션과는 거리가 멀지 만 적어도 브라우저를 새로 고치는 작업은 아닙니다.