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 🙏

© 2024 – Pkg Stats / Ryan Hefner

spserver

v1.1.1

Published

Node static page server for running quick MVVM file server

Downloads

16

Readme

spserver

spserver (or single page server) is a simple helper utlity for creating/running a server for using in pure single-page applications in true MVVM fashion without having to write any node code or using nginx or anything. This can be helpful to jump start making any single-page applications and get it running in seconds.

How it works

spserver has two modes of serving files (minimum either has to be specified):

  • Single file
  • Static folder

When specifying a single file, all url requests will resolve with the contents of said file. This is handy for MVVM applications where the front-end javascript handles all url path routing.

When specifying a static folder, it will first look up the url request on the static folder to see if the file exists. If it doesn't, it falls back to the single file (above) or 404 (if single file was not specified).

A combination of these two will allow you to create a single base.html that will bootstrap your MVVM application with the static folder containing the javascript files. For an example, see the nfp_www project.

API

spserver(settings)

  • Settings for the server (see config below)

CLI

How to use

npm install [-g] spserver
spserver --file ./myfile.html --serve ./public -p 3000

Options

spserver --help

By default, spserver will use the settings located in config.json. You can also override them or run it directly using only the commands below.

--config Location of the config file for the server [default: config.json]

--port The port server should bind to [default: 3001 or 80 in production mode]

--file Single static file the server should serve on all unknown requests

--bunyan Use bunyan instead of console to log to [default: true in production mode]

--template Parse the static file as lodash template with all options/settings being passed to it

--name The name for this server for logging [default: spserver]

--serve Folder path to serve static files from [default: public]

--prod Force run the server in production mode

--debug Force run the server in development mode

Config

The config file (default config.json) provides means to configure spserver in greater detail as well as provide optional settings to pass into our template (see template below).

A sample config.json file:

{
  "production": {
    "port": 80,
    "bunyan": {
      "name": "myserver",
      "use_bunyan": true,
      "streams": [{
        "file": "/var/log/server.log",
        "level": "info"
      }]
    }
  },
  "development": {
    "port": 5000,
    "use_bunyan": false
  }
}

Any of the settings in the config.json file can be overridden using the CLI options above.

Template

spserver can also help provide any additional info to your single file thanks to lodash: template. If template mode is specified, it will parse the single file first through lodash.template with the whole config file. This can allow you to specify configuration in your config file and expose them in your single file.

Example:

config.json

{
  "api": "http://api.mysite.com"
}

base.html

<!doctype html>
<body>
  <script>
    var apiUrl = "<%- api %>"
  </script>
  <script src="/js/lib/mithril.js"></script>
  <script src="/js/main.js"></script>
</body

Then you can run it like this: spserver --config ./config.json --template --file ./base.html --serve ./public