0.3.1 • Public • Published


    Write CLI utilities that take a stream of data either stdin from one of more files. To be able to handle this:

    $ yourutil file.txt
    $ yourutil file1.txt file2.txt
    $ yourutil < file.txt
    $ cat file.txt | yourutil

    Just do this:

    #!/usr/bin/env node
    var read = require('read-input');
    var fnames = process.argv.slice(2);
    read(fnames, function (err, res) {
      // `err` will be given if at least one of the files fail.
      if (err) {
   /* => "..." */


    read(files, function(err, res) { ... })

    Reads from files. If no files are given, read from stdin. The result res is a result object. If any of the files can't be read, err will be an error object.

    var read = require('read-input');
    var fnames = process.argv.slice(2); //=> ['readme.txt']
    read(fnames).then(function (res) {       // '...'
      res.error      // undefined or Error()
      res.stdin      // true or false
      res.files      // [...]
      res.successes  // [...]
      res.failures   // [...]
    }).catch(function (err) {
      // stdin error

    To support older versions of Node.js without Promises, you can use callbacks:

    read(fname, function (err, res) {

    You can also iterate through res.files.

    read(fnames).then(function(res) {
      res.files.forEach(function (f) {    // ...
        f.error   // undefined or Error(...)
        f.stdin   // true or false    // 'readme.txt'

    If files is a blank array (or null), data will be read from stdin. The resulting data will have a similar schema.

    read([]).then(fucntion (res) {



    Read data from standard input. This will not throw errors.

    read.stdin().then(function (data) {
      console.log(data); // string
    read.stdin(function (err, data) {


    The results value is an object passed to the callback of read().

    • data (String) a concatenation of all data in all the files.
    • error (Error) The first error in all files. undefined if successful.
    • stdin (Boolean) is true if the file is read from stdin
    • files (Array) A list of files.
    • failures (Array) A list of files that failed.
    • successes (Array) A list of files that succeeded.

    The files, failures and successes are lists of files. Each of the items in these lists has a similar list of values:

    • data (String) File data
    • error (Error) the first error encountered, if applicable
    • stdin (Boolean) is true if the file is read from stdin
    • name (String) File name

    There's also error.result which refers to the result object.

    See read() for an example.


    read-input © 2014+, Rico Sta. Cruz. Released under the MIT License.
    Authored and maintained by Rico Sta. Cruz with help from contributors.  ·  GitHub @rstacruz  ·  Twitter @rstacruz


    npm i read-input

    DownloadsWeekly Downloads






    Last publish


    • rstacruz