我有一个文件,testboot.js
,我想注入导入语句,如下所示:
import "../app/app.spec";
import "../app/navbar/navbar.spec";
请注意,import 语句是相对于 testboot.js
的。我很难找到一种使用gulp的干净方法。这是我的部分吞咽任务:
gulp.task("inject", function (cb) {
gulp
.src("src/client/app/**/*.spec.js")
.pipe(debug())
.pipe(filenames("inject"))
.on("end", function () {
filenames.get("inject").map(function(e){
// do something
});
util.log("in end"); // never called
cb();
});
});
但永远不会调用"结束"处理程序。谁能帮我解决这个问题?谢谢。
您正在侦听错误的事件。从节点.js文档中Stream
'finish'
和'end'
事件分别来自父类Writable
和Readable
类。'finish'
事件在调用stream.end()
并且所有块都已由stream._transform()
处理后触发,'end'
在所有数据输出后触发,即在调用stream._flush()
中的回调之后。
这意味着您必须侦听'finish'
事件:
gulp.task("inject", function (cb) {
gulp
.src("src/client/app/**/*.spec.js")
.pipe(debug())
.pipe(filenames("inject"))
.on("finish", function () {
filenames.get("inject").map(function(e){
// do something
});
util.log("in end");
cb();
});
});
或者你必须确保调用stream._flush()
中的回调,例如使用 gulp.dest()
:
gulp.task("inject", function (cb) {
gulp
.src("src/client/app/**/*.spec.js")
.pipe(debug())
.pipe(filenames("inject"))
.pipe(gulp.dest('dist'))
.on("end", function () {
filenames.get("inject").map(function(e){
// do something
});
util.log("in end");
cb();
});
});