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

steelsky

v5.1.0

Published

A no BS static site generator

Readme

SteelSky

SteelSky is a "no BS" minimalist static site generator built for small personal websites and blogs.

Features

  • Build with an intuitive mix of Markdown and HTML
  • Full TypeScript support
  • Simple templating system
  • Automatic RSS feed
  • 100% vanilla TS/JS

CLI

Install

npm install -g steelsky

Usage

λ steelsky

▄█████ ▄▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄    ▄█████ ▄▄ ▄▄ ▄▄ ▄▄ 
▀▀▀▄▄▄   ██   ██▄▄  ██▄▄  ██    ▀▀▀▄▄▄ ██▄█▀ ▀███▀ 
█████▀   ██   ██▄▄▄ ██▄▄▄ ██▄▄▄ █████▀ ██ ██   █   

Usage: steelsky [options] [command]

CLI for SteelSky - Static Site Generator

Options:
  -V, --version                 output the version number
  -h, --help                    display help for command

Commands:
  build <inputDir> <outputDir>  Build the static site
  init <targetDir>              Copy the skeleton files to a new directory for quick project setup
  help [command]                display help for command

Site Structure

A very minimal site structure looks like this:

site/
    chrome/
        header.html
        footer.html
    content/
        favicon.ico
        index.md
    templates/
    ssconfig.json

A typical site structure might look something like this:

site/
    chrome/
        header.html
        footer.html
    content/
        css/
            site.css
        font/
            font.css
        img/
            img.png
            logo.png
        js/
            script.ts
        posts/
            post1.md
            post2.md
        about.md
        favicon.ico
        index.md
        posts.md
    templates/
        my_template.md
        my_template.css
        my_template.ts
    types/
        SSTypes.ts
    ssconfig.json
    tsconfig.json

Chrome

The site "chrome" is the header and footer content which is automatically added to every single page.

These two files go in ./chrome.

You don't need to worry about setting up your actual <head> element since SteelSky will handle that for you.

Header

Use this file to set up things like sticky headers, navigation etc.

Footer

Use this file to set up your footer info and layout.

Templates

Template Definition

Template definitions are .md files places in site/templates/.

Templates are reusable code blocks which can take optional parameters to fill in their data. A template might look like this:

My template: {{ content }}

Where {{ content }} represents a string which will be replaced by the content parameter.

A more advanced template might look like this:

<!-- ./templates/my_template.md -->
<div class="my-template"> 
    {{ content = "no content" }}
</div>

<script>
for (let i = 0; i < Number({{ count = 3 }}); i++) {
    console.log(i);
}
</script>

<style>
body {
    padding: 3rem;
}
</style>

Notes:

  • Each parameter has a default value which will be used if none is provided.
  • All values are strings, so numbers must be converted.

Template JS & CSS

Template files may include inline CSS and JS. However this will be duplicated each time the element is included on the page. Sometimes this is what you want, but often its better to write <template>.css and <template>.js files which will be included only once on a page where the template is used.

It is also possible for the <template>.md file to include JS & CSS in addition to that which is included in the corresponding .js and .css files.

Template usage

In any ./content/*.md file you can include a template into the page with this syntax:

```/my_template 
content="my content!"
count="5"
}}
```

This will be replaced with the processed template content before the page is rendered from markdown to HTML.

Front Matter

You can also access front matter with the syntax:

```/front:title```

Typescript

SteelSky can automatically compile TS files. Just add a tsconfig.json to the root of the site data and set compileTS: true in the config.

See the skeleton projects for an example tsconfig.json.

Config (ssconfig.json)

The ./ssconfig.json file is what you use to configure your SteelSky site.

An example config might look like:

{
  "baseURL": "http://localhost:3002",
  "siteTitle": "SteelSky Demo",
  "siteDescription": "SteelSky Demo Site",
  "siteImage": "/img/icon.png",
  "highlightStyle": "a11y-dark",
  "compileTs": true
}

Note: The baseURL is for generating social media links and RSS feeds. You probably don't need to change it for local development.

Page Front Matter & Metadata

Each page on the site take optional front matter:

```/front
title=Page Title
description=A short description
image=/img/page-image.png
date=2026-01-01
```

Accessing page metadata

SteelSky also calculates some additional metadata about the page. This metadata (including the page front matter) is available on the window object as pageMeta.

Site Listing (listing.json)

SteelSky automatically generates a ./listing.json file which includes metadata about the entire site.

This file can be fetched and used by scripts as needed.

[
  {
    "title": "about",
    "description": "the about page for this site",
    "image": "/img/icon.png",
    "date": "2026-03-23T17:55:25.350Z",
    "path": "/about.html",
    "ext": ".html"
  },
  {
    "title": "site.css",
    "description": "",
    "image": "",
    "date": "2026-03-23T17:55:25.417Z",
    "path": "/css/site.css",
    "ext": ".css"
  },
  {
    "title": "favicon.ico",
    "description": "",
    "image": "",
    "date": "2026-03-23T17:55:25.417Z",
    "path": "/favicon.ico",
    "ext": ".ico"
  },
  ...
]