readFileLinesWithReadline
JavaScript
import { createReadStream } from 'node:fs';
import { createInterface } from 'node:readline';
// Yields one line at a time; CRLF endings are handled by readline.
export async function* readFileLines(path, { encoding = 'utf8' } = {}) {
const input = createReadStream(path, { encoding });
const lines = createInterface({ input, crlfDelay: Infinity });
try {
for await (const line of lines) yield line;
} finally {
lines.close();
input.destroy();
}
}
// Usage: for await (const line of readFileLines('app.log')) console.log(line);