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

brainpm

v2.2.1

Published

a package manager for the brain

Readme

brainpm

a package manager for the brain (very experimental)

Background

Read about the idea in this blog post

brainpm is based on npm. Like npm it uses package.json. Like browserify it extends package.json with an additional field. brain. brain is an object that lets you specify what knowledge is required to understand the learning material and what knowledge the learning material provides.

    "name":"flex-boxes",
    ...
    "brain": {
        "requires": ["html", "css"],
        "provides": ["css:flex-box"]
    }
    ...

Episodes

Episodes are short texts explaining a certain concept or technique. Typically they embed or link to some other ressources on the web. The main purpose of an episode is to add meta data to the linked/embedded learning resource. Some episodes may also include an interactive quiz or interactive illustrations.

Each episode lives in its own repository on github. See http://github.com/shecodes-content for examples.

bpm bundle generates a JavaScript file containing the episode's text (a markdown file) as well as the entire package.json file. The generated bundle can be put on a static file server, like the github-pages service, and can be loaded cross-origin via a <script> tag (JSONP-style).

Repositories

bpm create-remote is a fast way to create a repository on github and set it as the origin remote of a pre-existing local repository.

bpm publish can then be used to push the generated bundle to the gh-pages branch of that repository, thus making it available on the web.

Organisations

Repositories containing episodes need to be part of an organisation on github. The organisation provides the container and the context for episodes. bpm create-remote automatically creates a repository that belongs to the organisation that was specified in .bpmrc.

The organisation should contain episode repositories only.

Typical workflow

mkdir my-episode  # use snail-case
cd my-episode
git init
bpm init          # answer all the questions and git a package.json file
vim readme.md     # write your episode's text
git add package.json readme.md
git commit -am'initial commit'
git push
bpm create-remote
bpm publish       # bundle & publish to github pages

Later, when you need to make changes

vim readme.md     # fix your typos
git ci -am'fixed typos'
npm version patch # bump the version number
git push --tags
bpm publish       # re-publish to gh-pages

Installation

npm install brainpm  --global

Configuration

Configuration is read from a .bpmrc file located in your home directory, or in several other places, see http://npmjs.org/rc

It should have the following entries

github_user=YOUR_GUTHUB_USERNAME
github_organisation=YOUR_GITHUB_ORGANISATION

Usage

bpm init

Use bpm init instead of npm init to get the extra fields in yout package.json.

bpm init

bpm bundle

The bundle sub command takes your package.json and a markdown file (defaults to readme.md) and bundles them up as a JSONP comparible javascript file.

bpm bundle

bpm publish

bpm publish takes a previously created bundle and pushes it to the gh-pages branch of the git remote called origin. If the origin points to github, this means the bundle becomes available on the web.

bpm publish

bpm toc

bpm toc shows all episodes in the organisation, their names, version numbers and what knowledge they provide and require. It shows warnings (exclamation point in the first column) for episodes that require knowledge that is not provided by any episode.

bpm toc

bpm rebundle-all

clones, bundles and publishes all episodes found in the organisation. Useful when the bundler itself is updated.

bpm rebundle-all

bpm list-repositories

shows a list of all repositories in the organsiation.

bpm list-repositories

bpm info

shows information about a specific episode

bpm info intro