У меня проблема, которая, как я думал, может быть распространена для многих людей, но кажется, что я не прав. Поэтому я надеюсь, что кто-то может помочь, так как я не могу найти ответ в документах Gulp.Gulp Livereload после того, как ВСЕ файлы были скомпилированы?
Сейчас мой gulpfile.js имеет следующее содержание:
'use strict';
var gulp = require('gulp');
var jade = require('gulp-jade');
var gutil = require('gulp-util');
var stylus = require('gulp-stylus');
var jeet = require('jeet');
var nib = require('nib');
var uglify = require('gulp-uglify');
var livereload = require('gulp-livereload');
var sources = {
jade: "jade/**/*.jade",
partials: "partials/**/*.jade",
stylus: "styl/**/*.styl",
scripts: "js/**/*.js"
};
// Define destinations object
var destinations = {
html: "dist/",
css: "dist/css",
js: "dist/js"
};
// Compile and copy Jade
gulp.task("jade", function(event) {
return gulp.src(sources.jade)
.pipe(jade({pretty: true}))
.pipe(gulp.dest(destinations.html))
});
// Compile and copy Stylus
gulp.task("stylus", function(event) {
return gulp.src(sources.stylus).pipe(stylus({
use: [nib(), jeet()],
import: [
'nib',
'jeet'
],
style: "compressed"
})).pipe(gulp.dest(destinations.css));
});
// Minify and copy all JavaScript
gulp.task('scripts', function() {
gulp.src(sources.scripts)
.pipe(uglify())
.pipe(gulp.dest(destinations.js));
});
// Server
gulp.task('server', function() {
var express = require('express');
var app = express();
app.use(require('connect-livereload')());
app.use(express.static(__dirname+'/dist/'));
app.listen(4000, '0.0.0.0');
});
gulp.task('watch', function() {
livereload.listen();
gulp.watch(sources.jade, ["jade"]);
gulp.watch(sources.partials, ["jade"]);
gulp.watch(sources.stylus, ["stylus"]);
gulp.watch(sources.scripts, ["scripts"]);
});
// Define default task
gulp.task("default", ["jade", "stylus", "scripts", "server", "watch"], function(){
gulp.watch([
sources.jade,
sources.partials,
sources.stylus,
sources.scripts,
]).on('change', function(event) {
livereload.changed();
console.log('File', event.path, 'was', event.type);
console.log('LiveReload is triggered');
});
});
Что происходит, что у меня есть файл более 1 нефрит. Когда я работаю, скажем, в 10-м в алфавитном порядке, и я меняю его, я сразу же вернусь к работе с печью. Проблема в том, что он перезагружает вкладку браузера, прежде чем все нефритовые файлы закончат компиляцию и копирование в пункт назначения, поэтому файл, который я сейчас работаю, даже не компилируется, когда происходит обновление. Есть ли способ связать перезагрузку после завершения задачи?
Я попытался это, но он все еще не работает очень хорошо, поэтому я поставил LiveReload триггеров в задаче по умолчанию, в нижней части - я попытался сделать это в самом конце. Если я использую то, что вы предлагаете, все, что происходит, - это то, что lovereload срабатывает после компиляции первого из jade-файлов (я предполагаю, что эта задача выполняется для всего нефрита файлы каждый раз) .Это приводит к загрузке по вертикали после того, как первый из jade-файлов скомпилирован и не перезагрузится после последнего. Если я работаю над последним файлом, он перезагружается старой версией. Мне нужно, чтобы после загрузки все файлы нефрита. – bitstream