【问题标题】:gulp inject relative file pathsgulp 注入相对文件路径
【发布时间】:2016-03-06 02:20:53
【问题描述】:

我有一个文件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();
        });
});

但永远不会调用“结束”处理程序。谁能帮我解决这个问题?谢谢。

【问题讨论】:

    标签: gulp gulp-plugin


    【解决方案1】:

    您正在侦听错误的事件。来自Node.js documentation on 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();
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多