Application Path
Resolves an application's path.
Installation
$ npm install resolve-app-path
Usage
var resolve = ;
resolve()
Resolves an application's path.
var root = ;// returns <dirpath>
Notes
This module attempts the following strategies for resolving an application path:
-
When this module is a local module dependency, the module looks for an earliest ancestor
node_modules
directory, where we assume that the ancestor's parent is the application root. For example, given the following dependency chain/ └── foo └── bar └── node_modules └── beep └── node_modules └── resolve-app-path └── index.js
the application root is
/foo/bar
. -
When this module is loaded from a global Node path, the module tries to find the nearest
package.json
walking up from the current working directory. For example, given the following directory structure/ └── Users └── <user> └── .node_modules └── resolve-app-root └── index.js └── foo └── bar └── app └── root └── package.json └── bin └── cli
and
$ cd /foo/bar/app/root$ node ./bin/clithe application root is
/foo/bar/app/root
. -
When an alternative dependency strategy is used, e.g., copy and paste or
git
submodule, where this module is not located in anode_modules
directory, the module also attempts to find the nearestpackage.json
walking up from the current working directory. For example, given the following directory structure,/ └── foo └── bar └── app └── root └── package.json └── libs └── resolve-app-root └── index.js
the application root is
/foo/bar/app/root
. -
When none of the above methods resolve a root directory, the module uses
require.main.filename
as a fallback. For example, given the following directory structure,/└── foo└── bar└── app└── root└── index.js└── resolve-app-root└── index.jswhere, in
app/root/index.js
,var root = ;and
$ cd /foo/bar$ node ./app/rootthe application root is
/foo/bar/app/root
, as the main requiring file isindex.js
in/foo/bar/app/root
.
Examples
var path =root = ;var parts = ;console;
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.