resolve-app-path
v1.0.2
Published
Resolves an application's path.
Downloads
30
Maintainers
Readme
Application Path
Resolves an application's path.
Installation
$ npm install resolve-app-path
Usage
var resolve = require( 'resolve-app-path' );
resolve()
Resolves an application's path.
var root = resolve();
// 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/cli
the 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.js
where, in
app/root/index.js
,var root = require( './../../resolve-app-path' );
and
$ cd /foo/bar $ node ./app/root
the application root is
/foo/bar/app/root
, as the main requiring file isindex.js
in/foo/bar/app/root
.
Examples
var path = require( 'path' ),
root = require( 'resolve-app-path' );
var parts = root().split( path.sep );
console.log( parts );
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.