Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript BrowserSync CSS注入+;运行序列_Javascript_Css_Gulp_Browser Sync - Fatal编程技术网

Javascript BrowserSync CSS注入+;运行序列

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

我有一个gulp项目,它以特定的顺序运行某些任务。我正在尝试使用browserSync来注入CSS样式,因为源代码被更改,然后被编译,我的HTML文件也是如此。我尝试了各种方法让browserSync更新我的更改,例如在我的任务中附加
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]);
});