Javascript BrowserSync CSS注入+;运行序列
我有一个gulp项目,它以特定的顺序运行某些任务。我正在尝试使用browserSync来注入CSS样式,因为源代码被更改,然后被编译,我的HTML文件也是如此。我尝试了各种方法让browserSync更新我的更改,例如在我的任务中附加Javascript BrowserSync CSS注入+;运行序列,javascript,css,gulp,browser-sync,Javascript,Css,Gulp,Browser Sync,我有一个gulp项目,它以特定的顺序运行某些任务。我正在尝试使用browserSync来注入CSS样式,因为源代码被更改,然后被编译,我的HTML文件也是如此。我尝试了各种方法让browserSync更新我的更改,例如在我的任务中附加browserSync.reload,以及在我的监视任务中要监视的文件末尾添加.on('change',reload) 我的手表任务: import gulp from 'gulp'; import config from '../confi
browserSync.reload
,以及在我的监视任务中要监视的文件末尾添加.on('change',reload)
我的手表任务:
import gulp from 'gulp';
import config from '../config';
import browserSync from 'browser-sync';
gulp.task('watch', () => {
const reload = browserSync.reload;
gulp.watch(config.src.styles, ['styles']).on('change', reload);
gulp.watch(config.src.js, ['browserify']).on('change', reload);
gulp.watch(config.src.views, ['pug']).on('change', reload);
});
样式任务:
import gulp from 'gulp';
import sass from 'gulp-sass';
import gulpif from 'gulp-if';
import sourcemaps from 'gulp-sourcemaps';
import browserSync from 'browser-sync';
import autoprefixer from 'gulp-autoprefixer';
import handleErrors from '../util/handle-errors';
import config from '../config';
// SASS -> CSS
gulp.task('styles', () => {
//const reload = browserSync.reload;
return gulp.src(config.src.styles)
.pipe(gulpif(!global.isProd, sourcemaps.init()))
.pipe(sass({
sourceComments: global.isProd ? false : 'map',
outputStyle: global.isProd ? 'compressed' : 'nested'
}))
.on('error', handleErrors)
.pipe(autoprefixer('last 2 versions', '> 1%', 'ie 8'))
.pipe(gulpif(!global.isProd, sourcemaps.write('.')))
.pipe(gulp.dest(config.dest.styles))
.pipe(browserSync.stream()); // stream
//.pipe(gulpif(browserSync.active, browserSync.reload({ stream: true })));
});
有什么我可以进一步检查或需要更改的吗?不确定您是否仍在寻找答案,但仅供参考:
如果您正在运行browserSync.stream()
pipe和on('change',reload)
watch函数,则可能是导致您出现问题的原因。当使用Browsersync时,您希望为每个任务使用一个或另一个浏览器,因为它们执行相同的操作;一个在任务中内联,另一个在手表中被调用。在我的例子中,我喜欢在数组函数中使用手表上的重启操作,如下所示
gulp.task('styles', () => {
return gulp.src(config.src.styles)
.pipe(gulpif(!global.isProd, sourcemaps.init()))
.pipe(sass({
sourceComments: global.isProd ? false : 'map',
outputStyle: global.isProd ? 'compressed' : 'nested'
}))
.on('error', handleErrors)
.pipe(autoprefixer('last 2 versions', '> 1%', 'ie 8'))
.pipe(gulpif(!global.isProd, sourcemaps.write('.')))
.pipe(gulp.dest(config.dest.styles))
}))
您提到“在我的情况下,我喜欢使用重启操作…”我想您的意思是browserSync.reload
操作?
gulp.task('watch', () => {
gulp.watch(config.src.styles, ['styles',browserSync.reload]);
gulp.watch(config.src.js, ['browserify', browserSync.reload]);
gulp.watch(config.src.views, ['pug', browserSync.reload]);
});