resolve-app-path v1.0.2
Application Path
Resolves an application's path.
Installation
$ npm install resolve-app-pathUsage
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_modulesdirectory, 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.jsthe application root is
/foo/bar.When this module is loaded from a [global Node path](https://github.com/kgryte/node-global-paths), the module tries to find the nearest `package.json` walking up from the [current working directory](https://github.com/kgryte/utils-cwd). 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 ``` bash $ 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
gitsubmodule, where this module is not located in anode_modulesdirectory, the module also attempts to find the nearestpackage.jsonwalking up from the current working directory. For example, given the following directory structure,/ └── foo └── bar └── app └── root └── package.json └── libs └── resolve-app-root └── index.jsthe application root is
/foo/bar/app/root.When none of the above methods resolve a root directory, the module uses
require.main.filenameas 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 = require( './../../resolve-app-path' );and
$ cd /foo/bar $ node ./app/rootthe application root is
/foo/bar/app/root, as the main requiring file isindex.jsin/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.jsTests
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 testAll 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-covIstanbul creates a ./reports/coverage directory. To access an HTML version of the report,
$ make view-covLicense
Copyright
Copyright © 2015. Athan Reines.