【问题标题】:.jade files update html files, but browser-sync refreshes too early.jade 文件更新 html 文件,但浏览器同步刷新过早
【发布时间】:2017-06-06 07:20:05
【问题描述】:

我已经为此思考了好几个小时了,我很想得到一个提示来让我的设置顺利进行。

每当我保存 .jade 文件时,浏览器都不会立即更新。相反,我需要在更新反映在浏览器中之前再次保存:网络服务器在完成 build-jade 任务之前刷新。这看起来很奇怪,因为在刷新之前我确实将“build-jade”任务作为依赖项。

.html文件在第一次保存后更新,只是刷新太早了。

非常感谢任何提示。

gulp 文件:

/*global require*/
"use strict";

var gulp = require('gulp'),
  path = require('path'),
  data = require('gulp-data'),
  jade = require('gulp-jade'),
  prefix = require('gulp-autoprefixer'),
  sass = require('gulp-sass'),
  browserSync = require('browser-sync');


/*
 * Change directories here
 */

var public_dir = "dist/"
var settings = {
  sass_files: "applications/**/*.sass",
  jade_files: "applications/**/*.jade",
  js_files: "applications/**/*.js"
};



/**
 * Compile .scss files into public css directory With autoprefixer no
 * need for vendor prefixes then live reload the browser.
 */
gulp.task('build-sass', function() {
  gulp.src(settings.sass_files)
  // gulp.src(settings.sass_files, { base: "./" })
    .pipe(sass({
      outputStyle: 'compressed',
      onError: browserSync.notify
    }))
    .pipe(prefix(['last 15 versions', '> 1%', 'ie 8', 'ie 7'], { cascade: true }))
    .pipe(gulp.dest(public_dir))
    // .pipe(gulp.dest("."))
    .pipe(browserSync.reload({ stream: true }));
});


/**
 * Compile .jade files and pass in data from json file
 * matching file name. index.jade - index.jade.json
 */
gulp.task('build-jade', function() {
  gulp.src(settings.jade_files)
  // gulp.src(settings.jade_files, { base: "./" })
    .pipe(jade({ pretty: true })
    .pipe(gulp.dest(public_dir));
});

/**
 * Recompile .jade files and live reload the browser
 */
gulp.task('jade-rebuild', ['build-jade'], function() {
  browserSync.reload();
});


/**
 * Wait for jade and sass tasks, then launch the browser-sync Server
 */
gulp.task('browser-sync', ['build-sass', 'build-jade'], function() {
  browserSync({
    server: {baseDir: public_dir},
    notify: true
  });
});


/**
 * Watch scss files for changes & recompile
 * Watch .jade files run jade-rebuild then reload BrowserSync
 */
gulp.task('watch', function() {
  // gulp.watch(settings.js_files, ['jade-rebuild']);
  gulp.watch(settings.sass_files, ['build-sass']);
  gulp.watch(settings.jade_files, ['jade-rebuild']);
});

/**
 * Default task, running just `gulp` will compile the sass,
 * compile the jekyll site, launch BrowserSync then watch
 * files for changes
 */
gulp.task('default', ['browser-sync', 'watch']);

【问题讨论】:

    标签: gulp pug browser-sync


    【解决方案1】:

    虽然你确实在依赖列表中有任务,但你并没有返回任务,所以 gulp 实际上并不知道它什么时候完成,幸运的是这是一个很容易纠正的事情。

    我已经对您的代码进行了抽样并将return 添加到gulp.src() 函数中,您需要对所有函数执行此过程,然后它才能工作。

    希望这足够清楚,您可以继续前进。

    /**
     * Compile .jade files and pass in data from json file
     * matching file name. index.jade - index.jade.json
     */
    gulp.task('build-jade', function() {
      return gulp.src(settings.jade_files)
      // gulp.src(settings.jade_files, { base: "./" })
        .pipe(jade({ pretty: true })
        .pipe(gulp.dest(public_dir));
    });
    

    如果我能提供任何额外的帮助,请告诉我。

    【讨论】:

    • 我希望我能多点赞,谢谢!我很快就会在我的工作流程中发布更多问题,如果你能让我尽快编写实际的东西而不是工作流程,我几乎会嫁给你!
    • 慢慢到达那里,但希望我能加快速度。我也在这里添加了我的其他问题,希望得到一个简短的评论/提示;-) stackoverflow.com/questions/41779589/…
    猜你喜欢
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2015-01-28
    • 1970-01-01
    • 2011-01-16
    相关资源
    最近更新 更多