Exists
Tests whether a path exists on the filesystem.
Installation
$ npm install utils-fs-exists
Usage
var exists = ;
exists( path, clbk )
Tests whether a path exists on the filesystem.
;{if boolconsole;elseconsole;}
The above callback signature matches the now deprecated fs.exists()
API. The function also accepts the more conventional error
-first style callback signature found in most asynchronous Node APIs.
;{if errorconsole;if boolconsole;elseconsole;}
exists.sync( path )
Synchronously tests whether a path exists on the fileystem.
var bool = exists;// returns <boolean>
Notes
-
The following is considered an anti-pattern:
var fs =path = ;var file = path;if existsfile = fs;Because time elapses between checking for existence and performing IO, at the time IO is performed, the path can no longer be guaranteed to exist. In other words, here, a race condition exists between the process attempting to read and another process attempting to delete.
Instead, the following pattern is preferred, where
errors
are handled explicitly:var fs =path = ;var file = path;tryfile = fs;catch errorconsole;console; -
Nevertheless, use cases exist where one desires to check existence without performing IO. For example,
var fs =path = ;var file = path;if existsconsole;elsefs;
Examples
var exists = ;// Sync:console;// returns trueconsole;// returns false// Async:;;{if errorconsole;elseconsole;}
To run the example code from the top-level application directory,
$ node ./examples/index.js
Tests
Unit
Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:
$ make test
All new feature development should have corresponding unit tests to validate correct functionality.
Test Coverage
This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:
$ make test-cov
Istanbul creates a ./reports/coverage
directory. To access an HTML version of the report,
$ make view-cov
License
Copyright
Copyright © 2015. Athan Reines.