sindresorhus/package-directory

Find the root directory of a Node.js project or npm package

253

stars

41

commits

JavaScript

primary language

Feb 1, 2026

updated

README

package-directory

Find the root directory of a Node.js project or npm package

Install

npm install package-directory

Usage

/
└── Users
    └── sindresorhus
        └── foo
            ├── package.json
            └── bar
                ├── baz
                └── example.js
// example.js
import {packageDirectory} from 'package-directory';

console.log(await packageDirectory());
//=> '/Users/sindresorhus/foo'

API

packageDirectory(option?)

Returns a Promise for either the project root path or undefined if it could not be found.

packageDirectorySync(options?)

Returns the project root path or undefined if it could not be found.

options

Type: object

cwd

Type: string
Default: process.cwd()

The directory to start searching from.

ignoreTypeOnlyPackageJson

Type: boolean
Default: false

Ignore package.json files that only contain the type field.

This treats {"type":"module"} files as ESM scope markers instead of package roots.

Contributors

sindresorhus

32 commits

coreyfarrell

2 commits

BendingBender

2 commits

kellyselden

1 commits

sindresorhus/package-directory

Find the root directory of a Node.js project or npm package

253

stars

41

commits

JavaScript

primary language

Feb 1, 2026

updated

README

package-directory

Find the root directory of a Node.js project or npm package

Install

npm install package-directory

Usage

/
└── Users
    └── sindresorhus
        └── foo
            ├── package.json
            └── bar
                ├── baz
                └── example.js
// example.js
import {packageDirectory} from 'package-directory';

console.log(await packageDirectory());
//=> '/Users/sindresorhus/foo'

API

packageDirectory(option?)

Returns a Promise for either the project root path or undefined if it could not be found.

packageDirectorySync(options?)

Returns the project root path or undefined if it could not be found.

options

Type: object

cwd

Type: string
Default: process.cwd()

The directory to start searching from.

ignoreTypeOnlyPackageJson

Type: boolean
Default: false

Ignore package.json files that only contain the type field.

This treats {"type":"module"} files as ESM scope markers instead of package roots.

Contributors

sindresorhus

32 commits

coreyfarrell

2 commits

BendingBender

2 commits

kellyselden

1 commits

Languages

JavaScript

89.9%

TypeScript

10.1%