Почему gulp watch непрерывно выводит запуск \ окончание на терминал? - PullRequest
0 голосов
/ 03 июля 2018

После переноса gulp в gulp 4 терминал непрерывно выводит «Starting» и «Finished» после одного изменения \ сохранения в файле scss. Это нормально? Сценарий выполняет свою работу, но бесконечный вывод не выглядит правильным. Мой сценарий маленький, поэтому, возможно, кто-то видит то, чего я не вижу. Мой сайт работает на локальном веб-сайте IIS 7.5 с привязками, установленными на IP-адрес. Помощь очень ценится. Спасибо!

Единственная добавленная миграция gulp: gulp.series ('css')

var sitename = 'mysitename';

var gulp = require('gulp'),
autoprefixer = require('autoprefixer'),
browserSync = require('browser-sync').create(),
postcss = require('gulp-postcss'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
newer = require('gulp-newer'),

// Name of working theme folder
root = '../' + sitename + '/',
scss = root + 'sass/';

// CSS via Sass and Autoprefixer
gulp.task('css', function() {
    return gulp.src(scss + '{style.scss,rtl.scss}')
    .pipe(sourcemaps.init())
    .pipe(sass({
        outputStyle: 'compressed', 
        indentType: 'tab',
        indentWidth: '1'
    }).on('error', sass.logError))
    .pipe(postcss([
        autoprefixer('last 2 versions', '> 1%')
    ]))
    .pipe(sourcemaps.write(scss + 'maps'))
    .pipe(gulp.dest(root + '/dist/css/'))
    //.pipe(browserSync.stream());
});

// Watch everything
gulp.task('watch', function() {
    browserSync.init({ 
        open: 'external',
        host: 'example.com',
        proxy: 'example.com',
        port: 80
    });
    gulp.watch([root + '**/*.css', root + '**/*.scss' ], gulp.series('css') );
    gulp.watch(root + '**/*').on('change', browserSync.reload);
});
gulp.task('default', gulp.series('watch') );

Если мой файл style.scss сохранен, вывод терминала продолжается бесконечно ...

C:\Workspace\mysite\gulp-dev>gulp  
[12:00:37] Using gulpfile  
C:\Workspace\mysite\gulp-dev\gulpfile.js   
[12:00:37] Starting 'default'...   
[12:00:37] Starting 'watch'...   
[Browsersync] Proxying: http://example.com   
[Browsersync] Access URLs:   
-----------------------------------  
       Local: http://localhost:81  
    External: http://example.com:81    
-----------------------------------  
          UI: http://localhost:3001    
UI External: http://example.com:3001    
-----------------------------------   
[12:00:48] Starting 'css'...   
[12:00:48] Finished 'css' after 117 ms   
[12:00:48] Starting 'css'...   
[12:00:48] Finished 'css' after 32 ms   
[12:00:48] Starting 'css'...   
[12:00:48] Finished 'css' after 55 ms   
[12:00:48] Starting 'css'...   
[12:00:48] Finished 'css' after 63 ms   
[12:00:49] Starting 'css'...   
[12:00:49] Finished 'css' after 26 ms 

1 Ответ

0 голосов
/ 03 июля 2018

Это происходит потому, что вы смотрите папку, в которую вы выводите css:

gulp.watch([root + '**/*.css'

.pipe(gulp.dest(root + '/dist/css/')

Если «глобстар» [**] находится один в части пути, то он соответствует нулю или другие каталоги и подкаталоги для поиска совпадений.

" И подкаталоги " - это та часть, которая вас ловит. Таким образом, ваш "root/**/.css" включает в себя "root/dist/css". Каждый раз, когда задача 'css' выполняется, она снова записывает в просматриваемую папку, поэтому задача запускается повторно ... и т. Д. Вот почему вы обычно не смотрите весь свой корень, просто где бы ни находился src, а затем записываете его в другое место.

праймер glob

...