read-fallback
Read file with extension fallback.
Last updated 8 years ago by rem .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ npm install read-fallback 
SYNC missed versions from official npm registry.

read-fallback

NPM version NPM downloads Build Status

Install

$ npm install --save read-fallback

Usage

Assume that I have a foo.txt with content bar:

const read = require('read-fallback')

// it looks for foo.md, sure it does not exist
// then it looks for foo.txt, there it is
// the last foo.xxx is skipped
read('foo', {extensions: ['.md', '.txt', '.xxx']})
  .then(data => {
    if (data) {
      console.log(data.file, data.content)
      //=> foo.txt 'bar'
    } else {
      console.log('no matching file!')
    }
  })

// use an array of file paths directly
// because sometimes the filename is different too
read(['foo.txt', 'bar.md'])

API

readFallback(input, [options])

input

Type: string or array

An array of file paths or a single file name.

options

extensions

Type: array

Used when input is a string, eg:

// looks for gulpfile.js then gulpfile.babel.js
read('gulpfile', {extensions: ['.js', '.babel.js']})

// if no extensions:
// it simply reads `foo` only, without any extension
// but yeah, it's not a common case
read('foo')

handler

Type: function

Specific a handler function for reading file content, by default it's a promisified fs.readFile and returns {file, content} in the end.

Any function which returns a Promise or does synchronus operations is valid.

// you don't know what you have
// but if a.js exists you do this
// if a.ts exists you do that
read(['a.js', 'a.ts'], {
  handler(file, index) {
    if (file === 'a.js') return require(path.resolve(file))
    if (file === 'a.ts') return require(someTypeScriptParser(file))
  }
}).then(data => {
  // the data isn't `{file, content}` anymore
  // it's what you return in the last step
  // here it's the result of require
})

skipHandler

Type: boolean
Default: false

Simply return matched file path instead of using a handler function to read its content. In this way:

// assume we have b.js
read(['a.js', 'b.js'], {skipHandler: true})
  .then(data => {
    console.log(data)
    //=> {file: 'b.js'}
    // no data.content !!!
  })

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

License

MIT © EGOIST

Current Tags

  • 0.2.2                                ...           latest (8 years ago)

5 Versions

  • 0.2.2                                ...           8 years ago
  • 0.2.1                                ...           8 years ago
  • 0.2.0                                ...           8 years ago
  • 0.1.1                                ...           8 years ago
  • 0.1.0                                ...           8 years ago
Maintainers (1)
Downloads
Total 2
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (1)
Dev Dependencies (3)
Dependents (1)

© 2010 - cnpmjs.org x YWFE | Home | YWFE