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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@andrewshell/opmlsrc

v0.1.2

Published

Command line tool to export source code from an opml outline.

Readme

OPML Source

Command line tool to export source code from an opml outline.

Based on nodeEditor example

Install Globally

npm install -g @andrewshell/opmlsrc

Test with davefilesystem.opml

You'll want to have a properly formatted OPML file like davefilesystem.opml.

Calling opmlsrc <filename> will process the file into the current directory.

Example

cd ~
mkdir davefilesystem
cd davefilesystem
wget http://code.shll.me/davefilesystem.opml?format=opml -O davefilesystem.opml
opmlsrc davefilesystem.opml
ls -la

You should see something like:

total 48
drwxr-xr-x   7 andrewshell  staff   224 Nov 20 13:55 .
drwxr-xr-x+ 93 andrewshell  staff  2976 Nov 20 13:54 ..
-rw-r--r--   1 andrewshell  staff  5396 Nov 20 13:55 davefilesystem.opml
-rw-r--r--   1 andrewshell  staff  5532 Nov 20 13:55 filesystem.js
-rw-r--r--   1 andrewshell  staff   351 Nov 20 13:55 package.json
-rw-r--r--   1 andrewshell  staff   577 Nov 20 13:55 readme.md
drwxr-xr-x   4 andrewshell  staff   128 Nov 20 13:55 testing

Watching during development

If you're actively working on a project you might want the files to be updated when you update the outline. Do do this just add the --watch flag to your call.

opmlsrc davefilesystem.opml --watch

Supports includes

If you look in davefilesystem.opml you'll see the line:

[[http://fargo.io/code/node/shared/fs.js]]

This is an include. We will fetch this document and replace that block with the file contents.

When you're watching an outline with includes in it, I try to be helpful and cache the file in memory. On every build we re-request this document with the last etag and if we get back a status 304 Not Modified than we use the local cache.

Local includes

In addition to specifying a full URL, you can include local files by using the file: prefix like this:

[[file:package.json]]

It will try to find your file based on the location of the opml file you're processing.

Ignores comments

If your OPML file has an outline with the attribute isComment=true, we will ignore that branch and it will not end up in the rendered file.