How can I promise-ify a one-off usage of gulp in my application?(我如何保证在我的应用程序中一次性使用 gulp?)
问题描述
作为我正在编写的一个小程序的一部分,我想使用 gulp 将大量文件转换为 markdown.这不是独立于程序的构建步骤的一部分.这是程序的一部分.所以我没有使用 gulpfile 来处理这个问题.
As part of a small program I'm writing, I would like to use gulp to convert a large set of a files to markdown. This is not part of a build step separate from the program. It's a part of the program. So I'm not using a gulpfile to handle this.
问题是,因为它是异步的,所以我想使用一个 Promise,它会在 gulp 任务完成时提醒我.
The problem is, since it's async, I want to use a promise which will alert me when the gulp task is finished.
这样的东西是理想的:
io.convertSrc = function() {
var def = q.defer();
gulp.src(src + '/*.md')
.pipe(marked({}))
.pipe(gulp.dest(dist), function() {
def.resolve('We are done!');
});
return def.promise;
}
但 pipe
不接受回调.我怎么能处理这个?感谢您的帮助,我对 gulp 有点陌生.
But pipe
doesn't take a callback. How could I handle this? Thanks for your help, I'm somewhat new to gulp.
推荐答案
gulp 中的一切都是一个流,所以你可以只监听 end
和 error
事件.
Everything in gulp is a stream, so you can just listen for the end
and error
events.
io.convertSrc = function() {
var def = q.defer();
gulp.src(src + '/*.md')
.pipe(marked({}))
.pipe(gulp.dest(dist))
.on('end', function() {
def.resolve();
})
.on('error', def.reject);
return def.promise;
}
顺便说一句,Q 1.0 不再被开发(除了一些修复)并且将完全不兼容Q 2.0;我推荐 Bluebird 作为替代方案.
As an aside, Q 1.0 is no longer developed (aside from a few fixes here and there) and will be wholly incompatible with Q 2.0; I'd recommend Bluebird as an alternative.
还值得一提的是,NodeJS 0.12 及更高版本已内置 ES6 承诺(不需要 --harmony
标志),因此如果您不寻求向后兼容性,您可以使用它们来代替..
Also worth mentioning that NodeJS 0.12 onwards has ES6 promises built into it (no --harmony
flag necessary) so if you're not looking for backwards compatibility you can just use them instead..
io.convertSrc = function() {
return new Promise(function(resolve, reject) {
gulp.src(src + '/*.md')
.pipe(marked({}))
.pipe(gulp.dest(dist))
.on('end', resolve)
.on('error', reject);
});
};
这篇关于我如何保证在我的应用程序中一次性使用 gulp?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:我如何保证在我的应用程序中一次性使用 gulp?


基础教程推荐
- 响应更改 div 大小保持纵横比 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 动态更新多个选择框 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 我什么时候应该在导入时使用方括号 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01