resolve-app-path

1.0.2 • Public • Published

Application Path

NPM version Build Status Coverage Status Dependencies

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 a node_modules directory, the module also attempts to find the nearest package.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 is index.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

MIT license.

Copyright

Copyright © 2015. Athan Reines.

Package Sidebar

Install

npm i resolve-app-path

Weekly Downloads

0

Version

1.0.2

License

MIT

Last publish

Collaborators

  • kgryte