47 lines
1.8 KiB
Markdown
47 lines
1.8 KiB
Markdown
node-app-root-dir
|
|
=================
|
|
|
|
Simple module to infer the root directory of the currently running node application
|
|
|
|
## Usage
|
|
```javascript
|
|
// get the application's root directory
|
|
var appRootDir = require('app-root-dir').get();
|
|
|
|
// set the application's root directory
|
|
// (this will set a global so that no matter
|
|
// how many instances of app-root-dir module are
|
|
// installed, they will all return the same
|
|
// directory)
|
|
require('app-root-dir').set(__dirname);
|
|
```
|
|
|
|
|
|
## How it Works
|
|
The following strategy is used to find the application's root directory (the directory in your project that contains the main package.json file):
|
|
|
|
* If **package.json** exists at `process.cwd()` then use `process.cwd()` as the application root directory.
|
|
* Else if, the **app-root-dir** module has **node_modules** directory in its path then use the directory above this as the application root directory. NOTE: The parent directory of the _first_ **node_modules** directory in the path is used if the **app-root-dir** module is installed as a submodule of another module.
|
|
* Else, use the directory of **app-root-dir** module as the application root directory.
|
|
|
|
For example, consider this directory structure for the scenarios below:
|
|
+ my-project
|
|
+ package.json
|
|
+ server.js
|
|
+ node_modules
|
|
+ app-root-dir
|
|
+ lib
|
|
+ index.js
|
|
|
|
### Scenario 1:
|
|
Application is ran as:
|
|
`node server.js`
|
|
|
|
The application root directory will be **my-project** because **package.json** exists at `process.cwd()`
|
|
|
|
### Scenario 2:
|
|
Application is ran as:
|
|
`node my-project/server.js`
|
|
|
|
There is no **package.json** at `process.cwd()`. The application root directory will still be **my-project** because **my-project/node_modules/app-root-dir/lib/index.js** has **node_modules** in its path and the directory above **node_modules** is the application's root directory.
|