node
node copied to clipboard
add API for "package dir"
See https://github.com/nodejs/node/issues/33460.
tl;dr: it turns out that there's a number of tools that need to be able to locate a package's root directory, and with "exports", they can no longer rely on package/package.json
working, nor package/
.
If we could provide this API, then CJS could path.join
it, and ESM could use URL
, to get whatever file the tool needs to fs.readFile
.
Adding this new API would bypass questions about "should package.json
be an implicit part of a package's API", as well as avoid reliance on ESM-only or CJS-only mechanisms. By providing the package root dir rather than its package.json
, we would not be encouraging or discouraging any patterns of "where to store metadata" - instead, we'd be correctly leaving that choice up to userland.
Example solution: module.packageDir(specifier)
and module.packageDirSync(specifier)
(sync access is critical for many use cases).