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

gener

v1.2.7

Published

Simple static site generator

Readme

gener npm version

Build Status test coverage js-standard-style

Simple static ~~site~~ blog generator

Install

$ npm install -g gener

Basic usage

cd to the folder where you want the dist files to be created, and run:

$ gener

This will create an index.html and bundle.js file, that is your blog, congratulations :tada:. Add those files to a static server and you are done. Now for this to work, you need a posts folder, containing, at least, one post. A post is made of two files, a markdwon file and a json file, both with the same name. The md file is the actual content of your post, in markdown format. The json file is a configuration file, you can add the next properties to that files:

  • author (optional): An object with the data of the author of the post. It has a name (string) property and a social (object) property. Social properties are social network names (key) and links to its (value).
  • date (optional): An object with three properties (day, motnh, year), all of them are 1 based integers.
  • title: A string with the title of the post.
  • subtitle: Subtitle of the post.
  • tags(optional): An array of strings with the tags of the post.

Customization

There are two things that can be customized: Global config, through config.js file, and layouts through layouts folder.

Global config

In the root directory, you can add a config.json file. You can customize the following options:

  • author: A string with the owner (you) of the site.
  • name: The blog's name.
  • domain: Blog domain, (will) add a CNAME file with this value.
  • layout: The name of the layout to be used, by default use the default layout, if you change that, you should add layouts files to the layouts folder.
  • styles: An array of strings containing stylesheets to be added to the index.html file.
  • scripts: An array of js scripts. These are not added as script tags to the index.html file, they are runned after the view is mounted, otherwise, you wouldn't have access to the DOM of your blog.
  • classes: An object with posible custom classes for your rendered post. Useful in case your layout is made with some framework, like bootstrap, that make extensive use of css class to define styles.

Layouts

To customize layouts, add a layouts folder in the root directory. The folder contains the custom layouts that you want to add, those layouts are Handlebar files, with the name that you defined previously in your config.json file. If there is a layout folder and no layout property in your config file, the layouts templates would be ignored. Currently, there is two supported layouts, one for the list of posts and one for each post, and they should be named <layout-name>.hbs and <layout-name>-post.hbs. For example, if you have a config file like this:

{
    "name": "Some blog",
    "layout": "awesome"
}

You should have two layout files: layouts/awesome.hbs and layouts/awesome-post.hbs. Also, keep in mind that the post layout have access to each post config property and to a content property, with the html of your post, so you must use triple braces, and the main layout have access to the properties of the global config file and a posts property which is an array with the posts info.

License

MIT © Yerko Palma.