Simple module to infer the root directory of the currently running node application
// 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);
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 useprocess.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
- lib
- app-root-dir
Application is ran as:
node server.js
The application root directory will be my-project because package.json exists at process.cwd()
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.