# app-root-dir

> Simple module to infer the root directory of the currently running node application

Latest version **1.0.2** (published 2015-05-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install app-root-dir
pnpm add app-root-dir
yarn add app-root-dir
bun add app-root-dir
```

## Health

**Score 18/100 (F)** — status: abandoned.

Positive: has types package; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2015-05-28 |
| First published | 2014-06-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/app-root-dir) |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 14 |
| Author | Phillip Gates-Idem |
| Maintainers | philidem |
| Keywords | modules, path, node, app, root, directory |

## Links

- npm: https://www.npmjs.com/package/app-root-dir
- Repository: https://github.com/philidem/node-app-root-dir
- Issues: https://github.com/philidem/node-app-root-dir/issues
- npm.io page: https://npm.io/package/app-root-dir

## Alternatives

- [base64url](https://npm.io/package/base64url.md) — 6.1M weekly downloads
- [get-installed-path](https://npm.io/package/get-installed-path.md) — 502.9K weekly downloads
- [@uppy/url](https://npm.io/package/@uppy/url.md) — 185.8K weekly downloads
- [@d3fc/d3fc-shape](https://npm.io/package/@d3fc/d3fc-shape.md) — 16.2K weekly downloads
- [localizer](https://npm.io/package/localizer.md) — 226 weekly downloads

## Recent versions

- 1.0.2 (latest) — 2015-05-28
- 1.0.1 — 2014-10-16
- 1.0.0 — 2014-06-17

## README

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.

---
_Source: https://npm.io/package/app-root-dir · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
