What is readline?
The readline npm package is a core Node.js module that provides an interface for reading data from a Readable stream (like process.stdin) one line at a time. It is particularly useful for creating command-line interfaces and reading large files line by line.
What are readline's main functionalities?
Reading Input from stdin
This code sets up a readline interface to read user input from the standard input (stdin). It asks the user 'What is your name?' and prints a greeting with the user's input.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('What is your name? ', (answer) => {
console.log(`Hello, ${answer}!`);
rl.close();
});
Reading a File Line by Line
This example demonstrates how to use readline to read a file line by line. It creates a readline interface with a file stream as input and logs each line to the console as it is read.
const fs = require('fs');
const readline = require('readline');
const rl = readline.createInterface({
input: fs.createReadStream('file.txt'),
output: process.stdout,
terminal: false
});
rl.on('line', (line) => {
console.log(line);
});
Other packages similar to readline
readline-sync
readline-sync is an npm package that provides synchronous readline capabilities. Unlike the asynchronous nature of readline, readline-sync blocks the event loop until input is received. This is useful for CLI applications where synchronous operations are preferred.
inquirer
Inquirer.js is a powerful library for building interactive command-line interfaces. It offers more features than readline, such as checkboxes, lists, confirmations, and more. It is more suitable for complex CLI applications that require more than just line-by-line input.