【问题标题】:Gulp 4 & BrowserSync: Style Injection?Gulp 4 和 BrowserSync:样式注入?
【发布时间】:2016-01-03 23:27:38
【问题描述】:

我正在尝试将浏览器同步与 Gulp 4 一起使用,但 bs 没有保留状态,而是进行了完全刷新。这不是很有用。看来 bs 不再支持真正的注入了。如果你想贡献,我filed an issue on GH

下面是相关代码:

// styles:dev task    
gulp.task('styles:dev', function() {
    return gulp.src(config.src)
        .pipe(sourcemaps.init())
        .pipe(postcss(config.postcss.dev))
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest(config.dest.dev))
        .pipe(browserSync.stream());
});

// browserSync task    
gulp.task('browserSync', function(cb) {
    browserSync.init(config, cb);
});

// Watch task:
gulp.task('watch:styles', function() {
    return gulp.watch(config.paths.css,
        gulp.series('styles:dev'));
});

gulp.task('watch', gulp.parallel('watch:styles'));

// default task    
gulp.task('default',
    gulp.series('clean:dev',
        gulp.parallel('copy:dev', 'styles:dev'), 'browserSync', 'watch')
);

提前致谢。

【问题讨论】:

    标签: javascript gulp browser-sync


    【解决方案1】:

    已修复。这是我出错的地方:

    浏览器同步构造函数接受一个选项对象,该对象可以包含一个files 数组。我读过的大部分教程,包括 Google 自己的 Web Starter Kit 的 gulpfile,都不包含这个。事实证明,这是样式注入保留状态所必需的。

    此外,不要将.stream().reload() 作为样式任务中的最后一个管道传递。它不是必需的,并且会短路样式注入,强制完全刷新。

    最后,browserSync 进程不得终止,watchbrowserSync 任务必须并行执行才能进行实时注入。

    希望这可以帮助任何面临此问题的人。

    我也关闭了相应的github issue,还有posted my gulpfile

    【讨论】:

    【解决方案2】:

    大约 3 年后,Gulp 4 现在看起来有点不同,请参阅 https://gulpjs.com/docs/en/getting-started/creating-tasks

    要获得完整的 Gulp 4 kickstart 示例,请参阅 https://gist.github.com/leymannx/8f6a75e8ad5055276a71d2901813726e

    // Requires Gulp v4.
    // $ npm uninstall --global gulp gulp-cli
    // $ rm /usr/local/share/man/man1/gulp.1
    // $ npm install --global gulp-cli
    // $ npm install
    const { src, dest, watch, series, parallel } = require('gulp');
    const browsersync = require('browser-sync').create();
    const sass = require('gulp-sass');
    const autoprefixer = require('gulp-autoprefixer');
    const sourcemaps = require('gulp-sourcemaps');
    const plumber = require('gulp-plumber');
    const sasslint = require('gulp-sass-lint');
    const cache = require('gulp-cached');
    
    // Compile CSS from Sass.
    function buildStyles() {
      return src('scss/ix_experience.scss')
        .pipe(plumber()) // Global error listener.
        .pipe(sourcemaps.init())
        .pipe(sass({ outputStyle: 'compressed' }))
        .pipe(autoprefixer(['last 15 versions', '> 1%', 'ie 8', 'ie 7']))
        .pipe(sourcemaps.write())
        .pipe(dest('css/'))
        .pipe(browsersync.reload({ stream: true }));
    }
    
    // Watch changes on all *.scss files, lint them and
    // trigger buildStyles() at the end.
    function watchFiles() {
      watch(
        ['scss/*.scss', 'scss/**/*.scss'],
        { events: 'all', ignoreInitial: false },
        series(sassLint, buildStyles)
      );
    }
    
    // Init BrowserSync.
    function browserSync(done) {
      browsersync.init({
        proxy: 'blog.localhost', // Change this value to match your local URL.
        socket: {
          domain: 'localhost:3000'
        }
      });
      done();
    }
    
    // Init Sass linter.
    function sassLint() {
      return src(['scss/*.scss', 'scss/**/*.scss'])
        .pipe(cache('sasslint'))
        .pipe(sasslint({
          configFile: '.sass-lint.yml'
        }))
        .pipe(sasslint.format())
        .pipe(sasslint.failOnError());
    }
    
    // Export commands.
    exports.default = parallel(browserSync, watchFiles); // $ gulp
    exports.sass = buildStyles; // $ gulp sass
    exports.watch = watchFiles; // $ gulp watch
    exports.build = series(buildStyles); // $ gulp build
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      • 2020-06-04
      • 2015-05-18
      相关资源
      最近更新 更多