Ich habe mit einem Problem auf Gulp Aufgabe für viele Stunden zu kämpfen. Ich konnte nicht herausfinden, wie es funktioniert.browserSync.reload nicht mit Gulp Aufgabe
Lassen Sie mich zuerst meine Projektstruktur:
project/
|
|-- Gulp/
| |-- Base/
| |-- start-server.js
| |-- sass.js
| ...
| |-- Watch/
| |-- watch-sass.js
| ...
| |-- config.js
| ...
|-- gulpfile.js
| ...
Auch mir Code jeder Datei in dieser Struktur erwähnt zeigen lassen. gulpfile.js
/*jslint node: true */
"use strict";
var requireDir = require('require-dir'); // Node module to require whole directories
// ***** Require all tasks from Gulp folder *****
requireDir('./Gulp', {
recurse: true
});
Gulp/config.js
module.exports = {
paths: {
Project: {
dir: './',
src: './www',
dist: './dist'
},
HTML: {
all: './www/Views/**/**/*.html',
dir: './www/Views',
entry: './www/Views/index.html'
},
Sass: {
all: './www/StyleSheets/Sass/**/**/*.scss',
dir: './www/StyleSheets/Sass',
entry: './www/StyleSheets/Sass/main.scss',
map: '../../../dist/maps/sass',
vendor: './www/StyleSheets/Sass/Vendor/**/*.scss'
},
CSS: {
all: './www/StyleSheets/CSS/**/**/*.css',
dir: './www/StyleSheets/CSS',
entry: './www/StyleSheets/CSS/main.css',
map: '../../../dist/maps/css',
vendor: './www/StyleSheets/CSS/Vendor/**/*.css'
},
JS: {
all: './www/JavaScripts/**/**/*.js',
dir: './www/JavaScripts',
entry: './www/JavaScripts/app.js',
map: '../../../dist/maps/js',
vendor: './www/JavaScripts/Vendor/**/*.js'
},
// ...
}
};
Gulp/Basis/Auto-reload.js
var gulp = require('gulp'),
config = require('../config');
// ********* IMPORTS *********
var browserSync = require('browser-sync').create();
// ***END*** IMPORTS ***END***
// ***** Start server on localhost for live preview *****
gulp.task('start-server', function() {
browserSync.init({
server: {
baseDir: config.paths.Project.dir
},
open: true
});
});
Gulp/Basis/sass.js
var gulp = require('gulp'),
config = require('../config');
// ********* IMPORTS *********
var sass = require('gulp-sass'),
browserSync = require('browser-sync'),
notify = require('gulp-notify'),
sourceMaps = require('gulp-sourcemaps');
// ***END*** IMPORTS ***END***
// ***** Sass compiler *****
gulp.task('sass', function() {
return gulp.src(config.paths.Sass.all)
.pipe(sourceMaps.init())
.pipe(sass({
style: 'compressed'
}))
.on("error", notify.onError(function (error) {
return "Error: " + error.message;
}))
.pipe(sourceMaps.write(config.paths.Sass.map))
.pipe(gulp.dest(config.paths.CSS.dir))
.pipe(browserSync.reload({
stream: true
}));
});
Gulp/Uhr/Wacht sass.js
var gulp = require('gulp'),
config = require('../config');
// ********* IMPORTS *********
var browserSync = require('browser-sync'),
runSequence = require('run-sequence');
// ***END*** IMPORTS ***END***
// ***** Gulp watch Sass files *****
gulp.task('watch-sass', ['start-server'], function() {
gulp.watch(config.paths.Sass.all, ['sass', browserSync.reload]);
});
PROBLEMBESCHREIBUNG:
In der letzten Datei Gulp/Uhr/watch-sass.js die Funktion browserSync.reload nicht Arbeit. die Aufgabe 'watch-sass', 'start-server' und dann 'sass' funktioniert, es wird ohne Probleme ausgeführt. Allerdings es nicht automatisch aktualisieren Seite mit browserSync.reload nach Abschluss der Kompilierung * .scss Dateien und ich kann nicht herausfinden, warum. Kann mir jemand helfen?
Das ist nicht der Fall. Die Uhrfunktion ist im Kern von Gulp, also brauchst du nichts anderes als Schluck nur dafür zu verlangen. Auch die Uhr funktioniert bereits ohne Probleme wie erklärt, nur was nicht funktioniert, lädt die Seite nach dem Kompilieren von Sass-Dateien automatisch neu. – xeho91
Hmm. Ich nehme an, ich schreibe meine Schluck-Dateien anders. Ist das Array, in dem Sie ['sass', browserSync] haben, nicht nur für Schluck-Aufgabenabhängigkeiten? Oder ist das eine Art Abkürzung? (Ich spreche darüber, wo Sie den browserSync.reload platzieren). –
browserSync.reload ist eine der Abhängigkeiten von Schluckaufgaben. Wenn Sie diese Aufgaben in Array verwenden, können Sie alle diese Aufgaben gleichzeitig ausführen. Zumindest aus dem, was ich bisher gelernt habe. – xeho91