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

hercules

v0.0.6

Published

Makes CommonJS packages usable in the browser.

Readme

Hercules

By mimicking node.js' require, Herluces lets you use your CommonJS packages in the browser. It even supports packages.json dependencies.

This enables you to develop and test your code server side, and bundle it for the browser later.

How does it work?

Hercules = require 'hercules'
bundle = Hercules.bundle '/path/to/my/package'
source = bundle.toString() # Returns a chunk of Javascript that defines this.require

Send source to the browser (for example via express). All code run after source, will have access to a require method.

If you don't want to attach require to window you can do like this:

Hercules = require 'hercules'
bundle = Hercules.bundle '/path/to/my/package'
source = "
  (function() {
    #{bundle.toString()}
    window.MyAwesomeApp = require('.');
  })(window);
"

Installation

Add hercules to your package.json and run npm install. Then you'll be able to do require 'hercules'.

Dependencies

Hercules automatically add dependencies defined in your package.json (read more about package.json).

If you try to bundle a package that depends on a package that require node (defined in package.json's engines field), Hercules will throw an error. If you instead want Hercules to just ignore these packages, you can use ignore_node_packages like this:

Hercules = require 'hercules'
bundle = Hercules.bundle '/path/to/my/package', ignore_node_packages: true
source = bundle.toString()

Alternatives

Here's a list of other libraries that somehow enables you to use require in the browser.

Stitch

Very elegant and simple! Unfortunately, it is based on load paths which makes its require behaves different from node's. Written by one of my heroes, Sam Stephenson.

Browserify

Mature solution with a lot of options and features. It doesn't handle dependencies however. It tries to do too many different things for my taste - but you might see this as an advantage.

Other alternatives I haven't tried: