Gulp 4 watch 任务未检测到变化

Gulp 4 watch task is not detecting changes

我正在尝试从 Gulp 版本 3 切换到 Gulp 版本 4,但我经常遇到监视任务问题,当跟踪的 SCSS 文件发生更改时,它不会检测到更改。我做了一个 watch 函数的简单示例,因为它更容易调试。

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 文件,但结果是一样的. "Starting 'watch'..." 仅此而已。

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 文件从源移动到目标。

非常感谢任何帮助,因为我 运行 没有想法。

gulp 手表在启动后检测到变化,而不是在 运行 和 gulp watch 的最后一个 运行 之间。

你需要告诉 gulp watch 去 运行 第一个样式任务。

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

然后每当您再次触摸某个 scss 文件时,它将 re-run 样式任务。

更新:

您使用的是 docker 上的文件还是网络映射磁盘?您可能需要按照记录 "needed for successfully watching files over a network or other non-standard situations. "

打开 {usePolling: true}