최근에 BrowserSync를 사용하여 이동했습니다. 그 중 gulp guide을 따라 갔고 몇 가지 문제를 해결하기 위해 몇 가지를 조정했습니다. 그러나 지금은 작동하는 동안 페이지가 다시로드되는 것처럼 보입니다. CSS를 삽입하는 것이 아니라 시간을 절약 할 수 있습니다.browsersync + gulp 주입 안 함 CSS 만 다시로드
내 꿀꺽 파일 :
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var sass = require('gulp-sass');
var postcss = require('gulp-postcss');
var cleanCSS = require('gulp-clean-css');
var uglify = require('gulp-uglify');
var sourcemaps = require('gulp-sourcemaps');
var autoprefixer = require('autoprefixer');
gulp.task('scripts', function() {
return gulp.src([
'js/dev/main/**/*.js',
// We have to set the bootstrap lines separately as some need to go before others
'js/dev/bootstrap/alert.js',
'js/dev/bootstrap/collapse.js',
'js/dev/bootstrap/tooltip.js',
'js/dev/bootstrap/popover.js',
'js/dev/bootstrap/tab.js',
'js/dev/bootstrap/transition.js',
])
.pipe(sourcemaps.init())
.pipe(concat('scripts.js'))
.pipe(sourcemaps.write('../maps'))
.pipe(gulp.dest('./js'));
});
gulp.task('uglify', ['scripts'], function() {
return gulp.src('js/scripts.js')
.pipe(rename({suffix: '.min'}))
.pipe(uglify({
mangle: false
}))
.pipe(gulp.dest('./js'));
});
// create a task that ensures the `uglify` task is complete before
// reloading browsers
gulp.task('js-watch', ['uglify'], function (done) {
browserSync.reload();
done();
});
/* Creates the standard version */
gulp.task('styles', function() {
return gulp.src('scss/**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass().on('error', sass.logError))
.pipe(postcss([
autoprefixer({
browsers: [
'last 4 Chrome versions',
'last 4 Firefox versions',
'last 4 Edge versions',
'last 2 Safari versions',
'ie >= 10',
'> 1.49%',
'not ie <= 9'
],
cascade: false
}),
]))
.pipe(sourcemaps.write('../maps'))
.pipe(gulp.dest('./css/'))
.pipe(browserSync.stream(({match: 'css/**/*.css'})));
});
/* Creates the minified version */
gulp.task('css-minify', ['styles'], function() {
return gulp.src('scss/**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass({
outputStyle: 'compact' // Options: nested, expanded, compact, compressed
}).on('error', sass.logError))
.pipe(postcss([
autoprefixer({
browsers: [
'last 4 Chrome versions',
'last 4 Firefox versions',
'last 4 Edge versions',
'last 2 Safari versions',
'ie >= 10',
'> 1.49%',
'not ie <= 9'
],
cascade: false
}),
]))
.pipe(cleanCSS({
advanced: false,
aggressiveMerging: false
}))
.pipe(rename({suffix: '.min'}))
.pipe(sourcemaps.write('../maps'))
.pipe(gulp.dest('./css/'));
});
gulp.task('browser-sync', function() {
browserSync.init({
open: 'external',
proxy: "bmmedia.dev",
host: 'bmmedia.dev',
// port: 5000,
browser: "chrome",
});
});
gulp.task('watch', ['browser-sync', 'js-watch', 'css-minify'], function() {
gulp.watch(['scss/**/*.scss', 'js/dev/**/*.js'], ['js-watch', 'css-minify']);
});
gulp.task('default', ['js-watch', 'css-minify']);
공지 사항 내 watch
작업이 나는 문제가 here 지정 가졌다로 내가했던 가장 최근의 변화, 그리고 그것을 잘 작동하는 동안 나는 그러나 지금, this answer으로 해결 , 주입하는 것보다는 재 장전하는 것처럼 보입니다.
해결할 수있는 방법이 있습니까?
편집 :
난 그냥도 .scss
파일에 변화가 있었다마다 js-watch
실행 되었기 때문에 매번 다시로드 깨달았다, 그래서이 그것을 변경 :
gulp.task('watch', ['browser-sync', 'js-watch', 'css-minify'], function() {
gulp.watch(['scss/**/*.scss'], ['css-minify']);
gulp.watch(['js/dev/**/*.js'], ['js-watch']);
});
그러나 이제 .scss
파일이 변경되면 다시로드되거나 다시로드되지 않습니다. 나는 그것을 해결 한 생각
'watch' 태스크에서'browser-sync' 태스크를 분리하면 번들이 완료되면 실행되지 않습니다. 또한'gulp-newer'에 대한 팁을 주신 덕분에 좋은 플러그인처럼 보입니다. :) – Brett
.pipe (reload ({stream : true})); 브라우저를 새로 고치려는 각 스크립트 프로세스의 끝 부분에 배치해야하므로 기본 감시 작업 fn 중에 브라우저 다시로드 작업을 "감시"할 필요가 없습니다. –
글쎄, 나는 그 일을 "지켜 보지 않고있다"- 단지'watch'가 실행될 때 실행된다; 그러나'watch' 작업은 변경 대기를 멈추게하는 프로세스이기 때문에 확실하지는 않습니다.하지만 한번만 실행 한 다음 변경 사항이 발생하면 요청한 작업을 실행합니다.이 작업에는' browser-sync' 작업을 수행해야합니다.'watch' 작업이 실행될 때만 실행되어야합니다. – Brett