#javascript #node.js #gulp #browser-sync
#javascript #node.js #глоток #синхронизация с браузером #gulp #синхронизация браузера
Вопрос:
У меня возникла проблема, из-за которой BrowserSync не перезагружается при изменении. Из того, что я могу сказать, он зависает при перезагрузке, когда было внесено изменение. Изменения отображаются, когда я обновляю браузер вручную. Вот мой исходный код для моего gulpfile в качестве ссылки
const {src, dest, watch, series, parallel} = require('gulp')
const autoprefixer = require('autoprefixer')
const cssnano = require('cssnano')
const concat = require('gulp-concat')
const postcss = require('gulp-postcss')
const replace = require('gulp-replace')
const sass = require('gulp-sass')
const sourcemaps = require('gulp-sourcemaps')
const uglify = require('gulp-uglify')
const browsersync = require('browser-sync').create()
const files = {
scssPath: 'app/scss/**/*.scss',
jsPath: 'app/js/**/*.js',
htmlPath: 'app/index.html'
}
const scssTask = () => {
return src(files.scssPath)
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(postcss([ autoprefixer(), cssnano() ]))
.pipe(sourcemaps.write('.'))
.pipe(dest('dist'))
.pipe(browsersync.stream({stream: 'true'}))
}
const jsTask = () => {
return src(files.jsPath)
.pipe(uglify())
.pipe(concat('main.js'))
.pipe(dest('dist'))
.pipe(browsersync.stream({stream: 'true'}))
}
const serverRefresh = (done) => {
browsersync.reload()
done()
}
const serve = (done) => {
browsersync.init({
server:{
baseDir: './'
}
})
done()
}
const watchTask = () => {
watch([files.scssPath, files.jsPath], series(parallel(scssTask, jsTask), serverRefresh))
}
exports.default = series(parallel(scssTask, jsTask), serve, watchTask)
Пожалуйста, дайте мне знать, где я могу это исправить, поскольку я пробовал разные подходы и пока не нашел решения.
Комментарии:
1. В консоли браузера вы получаете какие-либо сообщения об ошибках?
2. Кроме того, упростите свой код, удалив любое использование
serverRefresh
задачи — вы уже перезагружаете сервер в других своих задачах, поэтому повторное выполнение может вызвать некоторые проблемы (особенно зависание, которое вы видите).3. И используйте
.pipe(reload({ stream: true }));
вместо.pipe(browsersync.stream({stream: 'true'}))
вызовов.stream
не использует те параметры, которые вы использовали.4. В терминале я не получаю ошибок, я получаю строку обновления браузеров, но она зависает и не возвращает завершенную задачу при отправке (не уверен, предназначено ли это или нет. В данный момент меня нет дома, но я учту ваши предложения. Спасибо!