我正尝试从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文件,但结果是相同的。 “开始'观看'...”,仅此而已。
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
文件从源移动到目标。
我真的很感谢任何帮助,因为我的想法已经用完了。
答案 0 :(得分:1)
gulp watch在启动后会检测到更改,而不是在gulp watch
的此运行与最后一次运行之间进行检测。
无论如何,您都需要告诉gulp watch来运行第一个样式任务。
function watchTask() {
watch('./scss/**/*.scss', {ignoreInitial: false}, style);
}
然后,只要您再次触摸一些scss文件,它就会重新运行样式任务。
更新:
您是否正在使用docker或网络映射磁盘上的文件?您可能需要按照“通过网络或其他非标准情况成功观看文件所需要的文件”中的说明,打开{usePolling: true}
。