Задача просмотра Gulp 4 не обнаруживает изменений

Я пытаюсь переключиться на Gulp версии 4 с Gulp версии 3, и у меня постоянно возникают проблемы с задачей наблюдения, она не обнаруживает изменений при изменении отслеживаемого файла SCSS. Я сделал простой пример функции часов, так как ее легче отлаживать.

Ubuntu 17.10
Node v8.9.4
Npm 6.9.0
Gulp CLI version: 2.2.0
Gulp Local version: 4.0.2

Я попытался полностью удалить gulp и gulp-cli и установить их снова, удалив папку node_modules и создав файл package.json с нуля, но результат тот же. «Начинаю смотреть…» и больше ничего.

package.json

    {
      "name": "starter",
      "version": "1.0.0",
      "description": "",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "gulp": "^4.0.2",
        "gulp-sass": "^4.0.2"
      }
    }

gulpfile.js

const {src, dest, watch} = require('gulp');
const sass= require('gulp-sass');

function style() {
    return src('./scss/**/*.scss')
        .pipe(sass())
        .pipe(dest('./css'));
}

function watchTask() {
    watch('./scss/**/*.scss', style);
}

exports.style = style;
exports.watch = watchTask;

Примечание. Задача «Стиль» работает правильно и перемещает все файлы .scss из источника в место назначения.

Я очень ценю любую помощь, так как у меня заканчиваются идеи.


person srdjan    schedule 12.06.2019    source источник
comment
Предполагая, что вы используете gulp watch, попробуйте немного изменить watch('./scss/**/*.scss', gulp.series(style)); и добавить series к вашему требованию. Иногда кажется, что это помогает, хотя в этом нет необходимости.   -  person Mark    schedule 12.06.2019
comment
Ваш исходный код отлично работает для меня. Эти пути правильные? И относительно местоположения этого gulpfile.js?   -  person Mark    schedule 12.06.2019
comment
Похоже, проблема возникает только тогда, когда есть какой-то тип сопоставленных/синхронизированных папок с vagrant/docker. Я использовал vagrant, и {usePolling: true} сделал мой день.   -  person srdjan    schedule 12.06.2019


Ответы (1)


gulp watch обнаруживает изменения после загрузки, а не между этим запуском и последним запуском gulp watch.

Вам нужно указать gulp watch запускать первую задачу стиля независимо от этого.

function watchTask() {
  watch('./scss/**/*.scss', {ignoreInitial: false}, style);
}

Затем он будет повторно запускать задачу стиля всякий раз, когда вы снова коснетесь какого-либо файла scss.

Обновление:

Используете ли вы файлы на докере или сетевом подключенном диске? Возможно, вам потребуется включить {usePolling: true}, как указано в документации, «необходимо для успешного просмотра файлов по сети или в других нестандартных ситуациях».

person huocp    schedule 12.06.2019
comment
Добавив параметр {ignoreInitial: false}, он изначально запускает задачу стиля, и теперь это нормально. Но у меня все еще есть проблема, когда я делаю некоторые изменения в файле .scss, он не обнаружит изменения и снова не выполнит задачу стиля. - person srdjan; 12.06.2019
comment
добавление {usePolling: true} для просмотра конфигурации сработало в моем случае. Кстати, я использую бродячие синхронизированные папки. Большое спасибо. - person srdjan; 12.06.2019