Package Exports
- read-fallback
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (read-fallback) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
read-fallback
Install
$ npm install --save read-fallbackUsage
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
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature - Commit your changes:
git commit -am 'Add some feature' - Push to the branch:
git push origin my-new-feature - Submit a pull request :D