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

reggi

v0.0.1

Published

A collection of functions.

Readme

Node.js: reggi

reggi is a superproject of javascript functions created by Thomas Reggi.

npm install reggi --save

Module Harvesting

I just invented something I've dubbed module harvesting. It's a method of automated Node.js module creation. What does that mean?

Do you ever find yourself creating a project and needing to use functions you've already built in other projects? If the functions are a couple of lines long you can find yourself copying and pasting them in your project every time you use them. Why didn't you put it on NPM the first time? We're told that monolithic apps are bad, but they need to take shape that way, then down the road your supposed to refactor. I absolutely hate this paradigm. The reason you didn't put it that three line function on npm the first time is because there's way to much overhead in creating the repo, publishing, documentation, tests, and setting dependencies. Module Harvesting is here to help.

Here's a great quote from substack.

If some component is reusable enough to be a module then the maintenance gains are really worth the overhead of making a new project with separate tests and docs. Splitting out a reusable component might take 5 or 10 minutes to set up all the package overhead but it's much easier to test and document a piece that is completely separate from a larger project. When something is easy, you do it more often.

The question I wanted to address was "What if there was no overhead?".

Todo

  • Writing Documentation

    • JSDoc Validation
  • Building Documentation, Watch script

  • Building Modules, Watch script

  • Building Bin Files

  • autoGitInit feature

  • autoGithubRepo feature

  • repoBackup feature

  • Cake in es6 support

  • recursive git commit if files changed

  • bin only

  • ensureLink && ensureSymlink not to create dirs

Flow

  • get deps for main file -> [file, deps]
  • get all tests for local deps -> [deps.local, possibleTestFiles]
    • ./test/{filename}.test.{exttname}
    • ./test/{dirname}/{filename}.test.{exttname}
    • ./test/{filename}.{exttname}
    • ./test/{dirname}/{filename}.{exttname}
  • check existence of possible test files [possibleTestFiles, testFiles]
    • if any tests exist append tests dir to link list [testfiles.length link.push([paths.test, paths.testDst])]
    • if test existing files append to link list [testFiles.length, link.concat(testFiles)]
./bin/module-bin.js ./recursive-deps.js '["./recursive-deps.js", "./bin/module-bin.js"]' --type=promise --method=mapRelativePaths
./bin/module-bin.js ./recursive-deps.js ./recursive-deps.js --type=promise --method=mapRelativePaths