Skip to content
Node.js

Streams

Pipe, transform, and consume streams efficiently.

#stream#transform#pipeline

Code

nodejs
import { createReadStream, createWriteStream } from "fs";
import { Transform, pipeline } from "stream";
import { createGzip } from "zlib";

// Transform stream that uppercases text
const upper = new Transform({
  transform(chunk, encoding, callback) {
    this.push(chunk.toString().toUpperCase());
    callback();
  }
});

// Pipeline handles backpressure and error propagation
pipeline(
  createReadStream("input.txt"),
  upper,
  createGzip(),
  createWriteStream("output.txt.gz"),
  err => {
    if (err) console.error("pipeline failed", err);
    else console.log("done");
  }
);

// Consuming a stream with async iteration
import { stdout } from "process";
for await (const chunk of createReadStream("input.txt")) {
  stdout.write(chunk);
}