Spaces:
Sleeping
Sleeping
| [](http://travis-ci.org/choojs/findup) | |
| @choojs/findup | |
| ======= | |
| > This is a fork of [Filirom1/findup](https://github.com/Filirom1/findup), pending [#16](https://github.com/Filirom1/findup/pull/16). | |
| ### Install | |
| ```sh | |
| npm install -g @choojs/findup | |
| ``` | |
| ### Usage | |
| Find up a file in ancestor's dir | |
| . | |
| βββ config.json | |
| βββ f | |
| βββ e | |
| βββ d | |
| βββ c | |
| βββ b | |
| β βββ a | |
| βββ config.json | |
| ### Options | |
| - `maxdepth`: (Number, default -1) How far to traverse before giving up. If maxdepth is `-1`, then there is no limit. | |
| #### Async | |
| findup(dir, fileName, options, callback) | |
| findup(dir, iterator, options, callback) with `iterator(dir, cb)` where cb only accept `true` or `false` | |
| ```js | |
| var findup = require('@choojs/findup'); | |
| findup(__dirname + '/f/e/d/c/b/a', 'config.json', function(err, dir){ | |
| // if(e) e === new Error('not found') | |
| // dir === '/f/e/d/c' | |
| }); | |
| ``` | |
| or | |
| ```js | |
| findup(__dirname + '/f/e/d/c/b/a', function(dir, cb){ | |
| require('path').exists(dir + '/config.json', cb); | |
| }, function(err, dir){ | |
| // if(e) e === new Error('not found') | |
| // dir === '/f/e/d/c' | |
| }); | |
| ``` | |
| #### EventEmitter | |
| findup(dir, fileName, options) | |
| ```js | |
| var findup = require('@choojs/findup'); | |
| var fup = findup(__dirname + '/f/e/d/c/b/a', 'config.json'); | |
| ``` | |
| findup(dir, iterator, options) with `iterator(dir, cb)` where cb only accept `true` or `false` | |
| ```js | |
| var findup = require('@choojs/findup'); | |
| var fup = findup(__dirname + '/f/e/d/c/b/a', function(dir, cb){ | |
| require('path').exists(dir + '/config.json', cb); | |
| }); | |
| ``` | |
| findup return an EventEmitter. 3 events are emitted: `found`, `error`, `end` | |
| `found` event is emitted each time a file is found. | |
| You can stop the traversing by calling `stop` manually. | |
| ```js | |
| fup.on('found', function(dir){ | |
| // dir === '/f/e/d/c' | |
| fup.stop(); | |
| }); | |
| ``` | |
| `error` event is emitted when error happens | |
| ```js | |
| fup.on('error', function(e){ | |
| // if(e) e === new Error('not found') | |
| }); | |
| ``` | |
| `end` event is emitted at the end of the traversing or after `stop()` is | |
| called. | |
| ```js | |
| fup.on('end', function(){ | |
| // happy end | |
| }); | |
| ``` | |
| #### Sync | |
| findup(dir, fileName) | |
| findup(dir, iteratorSync) with `iteratorSync` return `true` or `false` | |
| ```js | |
| var findup = require('@choojs/findup'); | |
| try{ | |
| var dir = findup.sync(__dirname + '/f/e/d/c/b/a', 'config.json'); // dir === '/f/e/d/c' | |
| }catch(e){ | |
| // if(e) e === new Error('not found') | |
| } | |
| ``` | |
| #### CLI | |
| ```js | |
| npm install -g @choojs/findup | |
| $ cd test/fixture/f/e/d/c/b/a/ | |
| $ findup package.json | |
| /root/findup/package.json | |
| ``` | |
| Usage | |
| ``` | |
| $ findup -h | |
| Usage: findup [FILE] | |
| --name, -n The name of the file to found | |
| --dir, -d The directoy where we will start walking up $PWD | |
| --help, -h show usage false | |
| --verbose, -v print log false | |
| ``` | |
| ### LICENSE MIT | |
| ### Read the tests :) | |