使用gulp-watch运行现有任务
Running existing task with gulp-watch
我已经在gulpfile.js
中定义了一些任务,我想使用gulp-watch
插件(在新文件上运行任务)。我的问题是,因为我找不到任何东西,我可以在运行监视(从插件)功能时运行我现有的任务吗?
var gulp = require('gulp'),
watch = require('gulp-watch'),
...;
gulp.task('lint', function () {
return gulp.src(path.scripts)
.pipe(jshint())
.pipe(jshint.reporter(stylish));
});
gulp.task('watch', function () {
watch({ glob: 'app/**/*.js' }); // Run 'lint' task for those files
});
因为我不想在我拥有的每个任务中都包含watch()
任务。我只想有 1 个任务 - 手表,它将组合所有"手表"。
-----编辑----(因为我可能不太明白我的意思):
我需要从任务内部运行任务gulp('watch')
例如:
就像我用gulp.watch
所做的那样:
gulp.task('watch', function () {
gulp.watch('files', ['task1', 'task2']);
});
我需要做同样的事情,但使用gulp-watch
插件,类似(我知道它不起作用):
var watch = require('gulp-watch');
gulp.task('watch', function () {
watch({ glob: 'files' }, ['task1', 'task2']);
});
我也遇到了想要使用 gulp-watch(不是 gulp.watch)的问题,需要使用回调表单,并且无法找到合适的方法来运行回调中的任务。
我的用例是我想监视所有手写笔文件,但只处理包含所有其他手写笔文件的主手写笔文件。较新版本的gulp-watch可能会解决这个问题,但我在4.3.x上遇到了问题,所以我被困在4.2.5上。
- gulp.run 已被弃用,所以我不想使用它。
- gulp.start运行良好,但也被gulp作者Contra建议不要。 运行
- 序列插件运行良好,可让您定义运行命令,但这是一个自称的黑客:https://www.npmjs.com/package/run-sequence
- 魂斗罗建议编写普通的旧函数并调用那些。这对我来说是一个新想法,但我认为下面的示例抓住了这个想法。https://github.com/gulpjs/gulp/issues/505
任你挑选。
var gulp = require('gulp'),
watch = require('gulp-watch'), // not gulp.watch
runSequence = require('run-sequence');
// plain old js function
var runStylus = function() {
return gulp.src('index.styl')
.pipe(...) // process single file
}
gulp.task('stylus', runStylus);
gulp.task('watch', function() {
// watch many files
watch('*.styl', function() {
runSequence('stylus');
OR
gulp.start('stylus');
OR
runStylus();
});
});
所有这些都在没有警告的情况下为我工作,但我仍然不确定是否从 gulp-watch 的 4.2.x 版本获得"完成"回调。
您很可能希望运行与您正在观看的文件相关的特定任务 -
gulp.task('watch',['lint'], function () {
gulp.watch('app/**/*.js' , ['lint']);
});
您还可以使用 ['lint']
部分在首次调用 watch 时运行任何必需的任务,或者利用这些任务异步运行
gulp.task('default', ['lint','watch'])
您可以只调用一个任务,然后包含两个任务
gulp.task('default', ['lint','watch'])
所以在这里你只会叫"咕噜咕噜"
gulp.task('watch', function() {
watch(files, function() {
gulp.run(['task1', 'task2']);
});
});
工作正常,除了警告
相关文章:
- Gulp Git首先运行提交任务,然后运行推送任务
- 如何在jshint任务运行且一切正常时记录消息
- 如何按顺序运行gullow任务
- 我一直收到的控制台警告是什么?推迟长时间运行的计时器任务以提高滚动的流畅性
- 如何在Grunt.js中观察多个文件,但只在更改的文件上运行任务
- 在节点.js的多个线程中运行任务
- 如何按特定顺序运行 Gulp 任务
- 如何在咕噜声插件中运行其他已注册的咕噜声任务
- Angularjs推迟了日志运行计时器任务
- 在Meteor.js中运行后台任务
- 如何使用参数按顺序运行三个任务
- 如何从Node.js运行gullow任务-gullow.start()的任何更好的替代方案
- 从gullow任务运行一个npm脚本
- 一个咕哝的任务能运行其他咕哝的任务吗
- 使用nodejs对两个任务运行异步
- 不能让Grunt ' watch '任务运行
- Gulp任务运行缓慢
- Gulp插件包括/排除行JS代码取决于任务运行
- 如何用Jasmine在Angular应用程序中模拟d3.json()调用,用Karma任务运行器进行测试
- Gradle任务运行Nashorn JavaScript