Javascript 当一项任务完成时,如何告诉Gulp?

Javascript 当一项任务完成时,如何告诉Gulp?,javascript,node.js,gulp,node-modules,Javascript,Node.js,Gulp,Node Modules,我正在尝试编写一个gulp插件,它将计算流中的文件数: 下面是一个示例任务: gulp.task("mytask", function () { gulp .src("...files...") .pipe(count()); // <--- here it is .pipe(changed("./some/path")) .pipe(uglify()) .pipe(rename({ extname: ".min.j

我正在尝试编写一个gulp插件,它将计算流中的文件数:

下面是一个示例任务:

gulp.task("mytask", function () {
  gulp
    .src("...files...")
    .pipe(count());                // <--- here it is
    .pipe(changed("./some/path"))
    .pipe(uglify())
    .pipe(rename({ extname: ".min.js" }))
    .pipe(gulp.dest(./some/path))
    .pipe(count());                // <--- here it is again
});
这意味着事情是异步运行的,并在任务完成后完成。文档说您必须使用回调或返回流。它似乎正在这样做


如何使此函数正常工作?是因为我使用的是
通过
而不是
通过2
插件吗?

在任务中将
返回
放在
吞咽
之前。您还没有提供任何方法让gulp知道您的流何时结束。

我对原始源所做的更改可以吗?我更改了它,这样我可以多次使用插件。我应该继续使用
还是
到through2
。如果他们工作,改变是好的!这是一个非常有用的插件。你应该考虑把它添加到你在Github日益增长的收藏!我经常使用它来查看管道链中有多少文件发生了更改(有点像上面的例子,即之前和之后)。@Over热心您能告诉我们如何使用lazypipe()here()从build:js任务中提取jshint和uglify,以便在正常构建中重用它们吗?我们面临的问题是任务中使用的局部变量。非常感谢。
gulp.task("mytask", function () {
  gulp
    .src("...files...")
    .pipe(count());                // <--- here it is
    .pipe(changed("./some/path"))
    .pipe(uglify())
    .pipe(rename({ extname: ".min.js" }))
    .pipe(gulp.dest(./some/path))
    .pipe(count());                // <--- here it is again
});
[14:39:12] Using gulpfile c:\foo\bar\baz\gulpfile.js
[14:39:12] Starting 'mytask'...
[14:39:12] Finished 'mytask' after 9.74 ms
9 files processed
5 files processed