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

statcodon

v2.3.0-2

Published

Yet another static site generator

Downloads

23

Readme

statcodon

Yet another static site generator. A start codon for your static website.

npm install statcodon
pnpm install statcodon
yarn add statcodon

Configuration

Configuration is done in a file named statcodon.config.js in the directory it is called in. It is a CommonJS-module, so use module.exports =.

Options

  • minify is whether to minify output files (default true)
  • require is whether to give the Node.js require() as a template local (default false)
  • srcDir is the directory to take files from (default src)
  • outDir is where to put them once compiled (default dist)
  • templateDir is where to find the template for pages (default templates)
  • formats is format handlers (next section) (default {})
  • hooks is a list of functions to execute on particular events. The only one currently defined is finish. (see below) (default {})
  • ignore is shell glob strings for files to ignore. (see minimatch) (default [])

Format handlers

statcodon takes an object formats with keys representing file extensions and values which are objects in the form:

interface FormatHandler {
  // Called to compile the file
  compile(
    text: string | Buffer,
    filename: string
  ): {
    text: string | Buffer;
    template: string;
    templateOptions: any & {};
  };

  // If not a "page," called to minify the compiled file
  minify?(text: string | Buffer): string | Buffer;

  // Whether to use templates and output as HTML
  page: boolean;

  // If true, compile is called with a buffer from fs.readFile instead
  // of a string.
  // If a "page," buffers will be coerced to strings (.toString())
  binary?: boolean;

  // What extension to save with
  outExt: string;
}

compile and minify can also be async i.e. return Promises.

Only HTML and CSS are defined by default, which only provide minifying functions. These can be overridden by simply defining them yourself. The default HTML is not considered a "page."

See @statcodon/markdown which provides a function to create a Markdown handler. Or write your own, it's not that hard.

Hooks

The finish hook is executed after all files are compiled. If there were no changes, the process exits before this is run.

Example config

const css = new (require('clean-css'))({});

const config = {
  srcDir: "src",
  outDir: "dist",
  templateDir: "templates",
  formats: {
    md: require("@statcodon/markdown")({
      MarkdownIt: new MarkdownIt(),
      pandocMeta: true,
    }),
    css: {
      compile: (text) => ({text}),
      minify: (t) => css.minify(t).styles,
      page: false,
      outExt: 'css',
      binary: false,
    };
  },
};

module.exports = config;

Page templating

statcodon uses Pug for templating. In the configured template directory you can add pug templates (extension .pug).

The template option named template determines which template is used for a page. If it is not present, statcodon uses default or the barebones page.pug in the package directory.