Я изо всех сил пытаюсь решить задачу Gulp. Я не мог понять, как заставить его работать.browserSync.reload не выполняет с использованием задачи Gulp
Позвольте мне показать первую свою структуру проекта:
project/
|
|-- Gulp/
| |-- Base/
| |-- start-server.js
| |-- sass.js
| ...
| |-- Watch/
| |-- watch-sass.js
| ...
| |-- config.js
| ...
|-- gulpfile.js
| ...
пусть Также мне показать код каждого файла, указанного в этой структуре. 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
});
Глоток/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'
},
// ...
}
};
Глоток/Base/авто-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
});
});
Глоток/Base/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
}));
});
Глоток/Часы/часы-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]);
});
ПРОБЛЕМА ОПИСАНИЕ:
В последнем файле Глоток/Часы/сторожевые sass.js функция browserSync.reload не делает Работа. задача «watch-sass ',' start-server ', а затем' sass 'работает, он работает без проблем. Однако не обновляет страницу с помощью browserSync.reload после завершения компиляции * .scss-файлов, и я не могу понять, почему. Кто-нибудь может мне помочь?
Это не тот случай. Функция часов находится в ядре Gulp, поэтому вам не нужно требовать ничего, кроме глотки только для этого. Также часы уже работают без проблем, как объяснено, только то, что не работает, перезагружает страницу автоматически после компиляции файлов Sass. – xeho91
Хм. По-моему, я пишу свои файлы с глотками по-разному. Разве это не массив, где у вас есть ['sass', browserSync] Только для зависимостей задачи gulp? Или это что-то вроде ярлыка? (Я говорю о том, где вы размещаете browserSync.reload). –
browserSync.reload - одна из задач задачи gulp. Использование этих задач в массиве позволяет одновременно запускать все эти задачи. По крайней мере, из того, что я узнал до сих пор. – xeho91