.jade 文件更新 html 个文件,但浏览器同步刷新过早
.jade files update html files, but browser-sync refreshes too early
我已经思考这个问题好几个小时了,我希望得到一个提示来让我的设置继续进行。
每当我保存 .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 实际上不知道它什么时候完成,幸运的是这是一个很容易纠正的事情。
我已经对您的代码进行了采样,并将 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));
});
如果我能提供任何额外帮助,请告诉我。
我已经思考这个问题好几个小时了,我希望得到一个提示来让我的设置继续进行。
每当我保存 .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 实际上不知道它什么时候完成,幸运的是这是一个很容易纠正的事情。
我已经对您的代码进行了采样,并将 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));
});
如果我能提供任何额外帮助,请告诉我。