首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.jade文件更新html文件,但浏览器同步刷新为时尚早。

.jade文件更新html文件,但浏览器同步刷新为时尚早。
EN

Stack Overflow用户
提问于 2017-01-21 10:33:30
回答 1查看 529关注 0票数 2

我已经考虑了好几个小时了,我很想知道如何开始我的计划。

每当我保存我的.jade文件时,浏览器不会立即更新。相反,在浏览器中反映更新之前,我需要保存第二次: the服务器在完成构建-jade任务之前刷新。这似乎很奇怪,因为我有“建造玉”的任务,作为一个依赖之前,刷新。

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

任何提示都是非常感谢的。

狼吞虎咽:

代码语言:javascript
复制
/*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']);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-21 11:04:49

虽然您确实在依赖列表中有任务,但您没有返回任务,因此gulp实际上不知道它何时完成,幸运的是,这是一个非常简单的事情来纠正。

我已经获取了您的代码示例,并将return添加到gulp.src()函数中,您需要在所有函数中遵循这个过程,然后它就能工作了。

希望这是足够明确的,让你向前迈进。

代码语言:javascript
复制
/**
 * 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));
});

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41778274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档