在 Gulp 管道中未调用 `on("end")` 处理程序的原因通常是什么?

编程入门 行业动态 更新时间:2024-10-05 17:16:46

在 Gulp <a href=https://www.elefans.com/category/jswz/34/1771259.html style=管道中未调用 `on("end")` 处理程序的原因通常是什么?"/>

在 Gulp 管道中未调用 `on("end")` 处理程序的原因通常是什么?

没有 MWE,我不希望有人会准确回答我的情况。我要问的是 generally 可能是什么原因。知道这一点,我会继续自己调查。

下面不是工作示例,但是如果基于 Gulp 简化我的标记源代码 linter 类(目前它有大约 750 行),它将是:

import type { TransformCallback } from "stream";
import Stream from "stream";
import VinylFile from "vinyl";


class MarkupSourceCodeLinter {
 
  public static provideLintingIfMust(
    projectBuildingMasterConfigRepresentative: ProjectBuildingMasterConfigRepresentative
  ): () => NodeJS.ReadWriteStream {

    const dataHoldingSelfSoleInstance: MarkupSourceCodeLinter = new MarkupSourceCodeLinter(/* */);

    // ...

    /* First run */
    return dataHoldingSelfSoleInstance.lint(dataHoldingSelfSoleInstance.targetFilesGlobSelectors);

  }


  protected lint(globSelectorsOrAbsolutePathsOfTargetFiles: Array<string>): () => NodeJS.ReadWriteStream {


    return (): NodeJS.ReadWriteStream => Gulp.

        src(globSelectorsOrAbsolutePathsOfTargetFiles, { read: false }).
                
                // ...
                
                pipe(new Stream.Transform({
                    objectMode: true,
                    transform(chunk: unknown, _encoding: BufferEncoding, callback: TransformCallback): void {
                        
                        console.log("CHECKPOINT1");
                        
                        if (chunk instanceof VinylFile) {
                            if (VinylFile.isVinyl(chunk)) {
                                console.log(chunk.path);
                            }
                        }
                        
                        callback(null, chunk);
                        
                    }
                })).

                on("end", (): void => {
                    console.log("CHECKPOINT2");
                });

  }
    
    private onMarkupSourceFileHasBeenAddedOrUpdated(targetMarkupFileAbsolutePath: string): void {

        //
        this.lint([ targetMarkupFileAbsolutePath ])();
    
  }

}

lint()
被外部调用时(通过public static
provideLintingIfMust
),
on("end", () => {})
处理程序被调用。 然而,当
lint()
onMarkupSourceFileHasBeenAddedOrUpdated
调用时,检查点
console.log("CHECKPOINT1");
到达 通过
console.log("CHECKPOINT2");
- 没有。只有一个文件。

我想,我只是不知道

on("end", () => {})
什么时候被实际调用。

后续运行的示例输出:

CHECKPOINT1
D:\XXX\FunctionalTests\MarkupProcessing\IncrementalBuilding\01-Source\Com
ponents\Header.pug

恰好一个文件已被处理,但

on("end", () => {})
还没有被调用。 通常可能是什么原因?

回答如下:

更多推荐

在 Gulp 管道中未调用 `on("end")` 处理程序的原因通常是什么?

本文发布于:2024-05-30 07:18:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770247.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:管道   中未   原因   程序   Gulp

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!