findPackageJSON
external fun findPackageJSON(specifier: String, base: ERROR CLASS: Symbol not found for URL = definedExternally): String?(source)
external fun findPackageJSON(specifier: ERROR CLASS: Symbol not found for URL, base: String = definedExternally): String?(source)
external fun findPackageJSON(specifier: ERROR CLASS: Symbol not found for URL, base: ERROR CLASS: Symbol not found for URL = definedExternally): String?(source)
/path/to/project
├ packages/
├ bar/
├ bar.js
└ package.json // name = '@foo/bar'
└ qux/
├ node_modules/
└ some-package/
└ package.json // name = 'some-package'
├ qux.js
└ package.json // name = '@foo/qux'
├ main.js
└ package.json // name = '@foo'
Content copied to clipboard
// /path/to/project/packages/bar/bar.js
import { findPackageJSON } from 'node:module';
findPackageJSON('..', import.meta.url);
// '/path/to/project/package.json'
// Same result when passing an absolute specifier instead:
findPackageJSON(new URL('../', import.meta.url));
findPackageJSON(import.meta.resolve('../'));
findPackageJSON('some-package', import.meta.url);
// '/path/to/project/packages/bar/node_modules/some-package/package.json'
// When passing an absolute specifier, you might get a different result if the
// resolved module is inside a subfolder that has nested `package.json`.
findPackageJSON(import.meta.resolve('some-package'));
// '/path/to/project/packages/bar/node_modules/some-package/some-subfolder/package.json'
findPackageJSON('@foo/qux', import.meta.url);
// '/path/to/project/packages/qux/package.json'
Content copied to clipboard
Since
v22.14.0
Parameters
specifier
The specifier for the module whose package.json
to retrieve. When passing a bare specifier, the package.json
at the root of the package is returned. When passing a relative specifier or an absolute specifier, the closest parent package.json
is returned.
base
The absolute location (file:
URL string or FS path) of the containing module. For CJS, use __filename
(not __dirname
!); for ESM, use import.meta.url
. You do not need to pass it if specifier
is an absolute specifier.