A CommonJS module to find the closest package.json, read it, and report its
content along with paths and goodies.
There are many modules that find the closest package.json,
but usually they only report one of the useful things you may want to know.
This one tries to give you all of the low-hanging fruit.
This module exports one function, which carries a few methods:
Like its .sync method (see below), but works asynchronously and returns
a promise for the report.
If from is false-y, start searching at the current working directory.
Otherwise, it should be a local directory path, as a string, where to start.
Throws an Error with .name === 'ERR_FOUND_NO_PACKAGE_JSON'
if no package.json is found.
Returns a report object with these keys:
fullPath: The full path topackage.json.dirPath: The full path to the directory wherepackage.jsonwas found.text(): A getter for the text of thepackage.json, assuming UTF-8 encoding.parse(): A getter for the revived (JSON-parsed) data fromtext, orfalsein case of a parsing error. Choosingfalseoverundefinedis so you can always safely access top-level properties.isEsModule: Boolean, whether the project seems to be an ES module.resolve(relPath): A function that naively resolvesrelPathrelative todirPath, without any actual file system interaction, thus not checking for existence, symlinks, or anything the like.mainPath: The full path to the package's entrypoint.
Given the fullPath to a package.json file, and its rawContent
as a string or Buffer, construct a report object and return it.
For better debugging, you may provide from, the initial search directory.
A little wrapper around .sync that in case of an ERR_FOUND_NO_PACKAGE_JSON
error just returns false.
:TODO:
- Needs more/better tests and docs.
ISC