尝试通过将 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
应该运行任务 css
和 watch
(它确实如此)。对于文件更改,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/