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

plateboiler

v0.1.0

Published

A configurable boilerplate generator

Readme

plateboiler

CI

What even is this?

This is a dead simple configurable boilerplate generator.

How to use it?

Install the cli globally

npm i -g plateboiler

Run the cli at the root of your project

pb init

This will generate a folder called .plateboiler with some file and a folder in it:

.plateboiler
| config.json
| example
| | __name__.js

Take a look at those files:

  • config.json
{
  "example": {
    "vars": ["name"],
    "dir": "src"
  }
}
  • example/__main__.js
console.log('Hello, __name.capitalize__!');

Now generate a file from this template:

pb example --name=world

This will generate a file called world.js in a folder src with the following content:

  • src/world.js
console.log('Hello, World!');

API reference

Configuration

All the configuration is described in .plateboiler/config.json. This file consists of an object, where the keys are names of your templates:

{
  "example": {
    "vars": ["name"],
    "dir": "src"
  }
}

Configuration parameters

  • vars: This is an array of the variable names you are going to expose.

  • dir: This is a string that represents the folder in which you want to generate your files. Note that this path is used relative to the folder in which .plateboiler is located.

Variables and modifiers

After declaring your variable names in config.json, feel free to use them in your files, file names and folder names as following:

__variableName__

There are some modifiers that you may want to use:

  • capitalize
  • decapitalize
  • lower
  • upper
  • camel
  • kebab
  • snake
  • swap
  • title

These functions are all taken from the voca library. Use its documentation for more information.

Use them as following:

__variable_name.kebab__

Then, if you specify variable_name as pb example --variable_name=some_name, it will be transformed into someName.

You can also stack modifiers like:

__variable_name.kebab.capitalize__

So your variable will be transformed into SomeName.

Variables casing

Note! Even though such modifiers as snake and decapitalize exist, you should always use snake case for both declaring and defining your variables for consistency: --item=pizza_with_pineapples.

File structure

The .plateboiler folder consists of config.json and folders with your templates.

Note that folder names must be the same as the template names you specify in your config.json:

  • config.json
{
  "my_template": {
    "vars": ["some_var"],
    "dir": "src"
  },
  "another_template": {
    "vars": ["another_var"],
    "dir": "src/example"
  }
}
  • File structure:
.plateboiler
| config.json
| my_template
| | __some_var__-example.js
| another_template
| | __another_var__-another-example.js

You are allowed to use not only files, but also directories as following:

  • config.json
{
  "service": {
    "vars": ["name"],
    "dir": "src/services"
  }
}
  • File structure:
.plateboiler
| config.json
| service
| | __name__
| | | __name__.service.js
| | | __name__.hooks.js
| | | __name__.class.js

CLI

Initialization

pb init

Generation

pb <template> [vars]