javascript - gulp.watch() 不运行后续任务

标签 javascript frontend gulp

尝试通过将 gulp 任务拆分为单独的文件来制作模块化 gulp 任务时遇到奇怪的错误。以下内容应该执行任务 css,但没有:

文件:watch.js

var gulp = require('gulp');
var plugins = require('gulp-load-plugins')();

gulp.task('watch', function () {
  plugins.watch('assets/styl/**/*.styl', ['css']); // PROBLEM
});

plugins.watch() 中声明 ['css'] 从技术上讲应该接下来运行以下任务:

文件:css.js

var gulp = require('gulp');
var plugins = require('gulp-load-plugins')();

gulp.task('css', function () {
  return gulp.src('assets/styl/*.styl')
    .pipe(plugins.stylus())
    .pipe(gulp.dest('/assets/css'));
});

文件:gulpfile.js

var gulp = require('gulp');
var requireDir = require('require-dir');
requireDir('./gulp/tasks', { recurse: true });

gulp.task('develop', ['css', 'watch']);

文件夹结构

- 咕噜咕噜/ - 任务/ - css.js -watch.js - gulpfile.js

<小时/>

预期行为

gulpdevelop 应该运行任务 csswatch (它确实如此)。对于文件更改,watch 应该检测到它们(确实如此),然后运行 ​​css 任务(实际上没有)。

一种解决方案

不太喜欢这个解决方案,因为 gulp.start() 在下一个版本中将被弃用,但这确实修复了它:

文件:watch.js

plugins.watch('assets/styl/**/*.styl', function() {
  gulp.start('css');
});

最佳答案

要么使用 gulp 的 builtin watch使用以下语法:

gulp.task('watch', function () {
  gulp.watch('assets/styl/**/*.styl', ['css']);
});

或者gulp-watch plugin使用以下语法:

gulp.task('watch', function () {
  plugins.watch('assets/styl/**/*.styl', function (files, cb) {
    gulp.start('css', cb);
  });
});

您的 gulp.dest 路径中也可能存在拼写错误。将其更改为相对:

.pipe(gulp.dest('assets/css'));

关于javascript - gulp.watch() 不运行后续任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26476226/

相关文章:

javascript - 使用 Jackson 在 Javascript 和 Java 之间传输 JSON

javascript - 如何用reactjs实现长滚动和分屏?

javascript - 在 Next 13 中,如何在尺寸不同的情况下以相同的宽度和高度在网格中显示图像?

javascript - 将连接的 Gulp 流 file.contents 管道连接到服务器(connect、express 或 http)响应

node.js - 如何限制 BrowserSync 的速度?

javascript - 如何淡化渲染组件的底部边缘直到重新渲染?

javascript - window.location.href - 新选项卡中的链接

javascript - 如何让 PhantomJS 在渲染截图时包含背景图片?

symfony - 如何让twig的转储功能显示展开的数据?

node.js - Wiredep + Gulp 不会生成任何脚本标签和路径