npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

find-up-package-json-cjs

v1.0.1

Published

A CommonJS module to find the closest `package.json`, read it, and report its content along with paths and goodies.

Readme

find-up-package-json-cjs

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.

API

This module exports one function, which carries a few methods:

findUpPackageJson(from)

Like its .sync method (see below), but works asynchronously and returns a promise for the report.

findUpPackageJson.sync(from)

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 to package.json.
  • dirPath: The full path to the directory where package.json was found.
  • text(): A getter for the text of the package.json, assuming UTF-8 encoding.
  • parse(): A getter for the revived (JSON-parsed) data from text, or false in case of a parsing error. Choosing false over undefined is 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 resolves relPath relative to dirPath, 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.

findUpPackageJson.report(fullPath, rawContent, from)

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.

findUpPackageJson.syncSoftFail(from)

A little wrapper around .sync that in case of an ERR_FOUND_NO_PACKAGE_JSON error just returns false.

Usage

:TODO:

Known issues

  • Needs more/better tests and docs.

 

License

ISC