Find the root directory of a Node.js project from a given path
npm install find-pkg-dir


Find the root directory of a Node.js project from a given path
``javascript
const findPkgDir = require('find-pkg-dir');
// When the /Users/shinnn/foo directory contains a package.json file:
findPkgDir('/Users/shinnn/foo'); //=> '/Users/shinnn/foo'
findPkgDir('/Users/shinnn/foo/bar'); //=> '/Users/shinnn/foo'
findPkgDir('/Users/shinnn/foo/bar/baz'); //=> '/Users/shinnn/foo'
`
* It uses InternalModuleStat through require.resolve() as it's faster than fs.statSync().
It checks if a path is file or directory, to avoid mistaking a package.json directory* as a package.json file.
* It automatically resolves symbolic links.
``
npm install find-pkg-dir
`javascript`
const findPkgDir = require('find-pkg-dir');
path: string (a path to start searching from) string
Return: (absolute path) or null
It finds the first directory containing a package.json file, recursively looking up, starting with the given path.
When it cannot find any package.json files finally, returns null.
`javascript`
findPkgDir('path/of/non/nodejs/project'); //=> null
`package.json
find-pkg-dir (this project):
Find from the current directory 6.514971999917179 ms/op avg.
Find from the deep directory 301.970978999976069 ms/op avg.
Resolve symlinks 4.765490400046110 ms/op avg.
Find from the directory 33.653173299971968 ms/op avg.
find-pkg + path.dirname():
Find from the current directory 7.597467000037431 ms/op avg.
Find from the deep directory 421.827792199980479 ms/op avg.
Resolve symlinks N/A (operation failed)
Find from the package.json directory N/A (operation failed)
find-root:
Find from the current directory 8.991230100020767 ms/op avg.
Find from the deep directory 479.851285400055360 ms/op avg.
Resolve symlinks N/A (operation failed)
Find from the package.json directory N/A (operation failed)
pkg-dir:
Find from the current directory 9.322520200069993 ms/op avg.
Find from the deep directory 505.923578500002634 ms/op avg.
Resolve symlinks N/A (operation failed)
Find from the package.json directory N/A (operation failed)``
ISC License © 2018 - 2019 Shinnosuke Watanabe