gulp注入相对文件路径

时间:2016-03-06 02:20:54

标签: gulp gulp-plugin

我有一个文件testboot.js,我想像这样注入import语句:

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();
        });
});

但永远不会调用“结束”处理程序。任何人都可以帮我解决这个问题吗?谢谢。

1 个答案:

答案 0 :(得分:1)

你正在听错事件。来自Node.js documentation on Stream

  

isAtomic'finish'事件分别来自父'end'Writable类。调用Readable并且'finish'处理了所有块后触发了stream.end()事件,stream._transform()在输出所有数据后触发'end' { {1}}已被调用。

这意味着你要么必须监听stream._flush()事件:

'finish'

或者您必须确保调用stream._flush()中的回调,例如与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(); }); });

gulp.dest()