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

spawnit

v0.12.0

Published

[![Build Status](https://travis-ci.org/tjdavenport/spawnit.svg?branch=master)](https://travis-ci.org/tjdavenport/spawnit) [![Coverage Status](https://coveralls.io/repos/github/tjdavenport/spawnit/badge.svg?branch=master)](https://coveralls.io/github/tjdav

Readme

spawnit

Build Status Coverage Status

Spawnit allows you to start prototyping your Javascript browser application with zero boilerplate. It will start a configurable, customizeable expressjs development server that supports live reloading, live css injection, SASS transpilation, bundling with Browserify, and script concatenation. No boilerplate is needed to start creating elaborate single page applications.

Demonstration gif

CLI Options

  Usage: index [options]

  Options:

    -h, --help         output usage information
    -V, --version      output the version number
    -p, --port <n>     Port number the development server will listen on.
    -w, --wssPort <n>  Port number the websocket server will listen on.
    -e, --errorNotify  Pass bundle/sass errors to desktop notifier
    -n, --noOpen       Do not open webpage in default browser

Configuration File

Spawnit will look for a spawnit-config.js file in the current working directory. The file should export an object with configuration keys/values. All CLI options can be set in this file. Default Browserify and node-sass options can be found in ./lib.

Example:

// spawnit-config.js

module.exports = {
  port: 1337,
  wssPort: 1338,
  /**
   * define the domain that will be used
   * when the default browser is opened
   */
  domain: 'localhost',
  /**
   * These options will be used to create a Browserify instance
   */
  browserifyOpts: {},
  /**
   * These options will be passed to node-sass.render
   */
  nodeSassOpts: {},
  /**
   * These options will be passed to https.createServer
   */
  ssl: {
    key: fs.readFileSync('./server.key'),
    cert: fs.readFileSync('./server.crt'),
    passphrase: 'foobarbaz',
  },
  /**
   * Define where assets are stored and the route at which
   * they will be available
   */
  staticAssets: [
    { route: '/foo/bar/fonts', source: './fonts' },
  ],
  errorNotify: false,
  /**
   * These scripts will be made available under /_spawnit/script/... routes
   */
  scripts: [],
  noOpen: false,
  /**
   * These files/folders will be watched. Changes will trigger css injection.
   */
  scssFiles: [
    path.join(process.cwd(), 'styles.scss'),
    path.join(process.cwd(), 'styles'),
  ],
  /**
   * Define linting rules for `eslint`
   *  The ESLint::CLIEngine is being used to provide linting.
   *  see the CLIEngine API documentation here:
   *    https://eslint.org/docs/developer-guide/nodejs-api#cliengine
   */
  esLintOpts: {  }
};

Custom index.html

Spawnit determines what HTML to respond with in one of two places.

  1. It will look for index.html in the current working directory.
  2. If no index exists in the current working directory, it will use the hardcoded default,

Spawnit assumes that you're developing an SPA, so the default body only contains a single div element: <div id="app"></div>. If you decide you need more control of the index file, be sure to include the following tags so everything still works:

<!-- this will load rendered css from the server -->
<link id="_spawnitcss" rel="stylesheet" href="/_spawnit/css">
<!-- This will be replaced by script tags that correspond to elements in the scripts option. -->
<%= scriptTags %>
<!-- this will load the compiled Browserify bundle -->
<script src="/_spawnit/bundle"></script>
<!--
  this will establish a websocket connection with the Spawnit server,
  allowing the utility features (live reload etc) to work
-->
<script src="/_spawnit/remote"></script>

Roadmap

  1. Get coveralls badge working
  2. Add plugins config option to allow for complete customization of the expressjs server.
  3. Add Webdriver support?