gulp 注入相对文件路径



我有一个文件,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' 事件分别来自父类WritableReadable类。'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();
    });
});

最新更新