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 🙏

© 2025 – Pkg Stats / Ryan Hefner

janja

v2.4.3

Published

A simple, fast, lightweight, and extensible template engine for Node.js and browsers.

Readme

The Reeds
Tr. ZHAO Yanchun

The reeds sway, green and green;
The white dew becomes frost.
The lady fair I mean
Looms yonder, all but lost.
Upstream to her I row;
The course is long and high.
Upstream to her I go;
On the waves she looks shy.

The reeds sway, clean and clean;
The white dew has not dried.
The lady fair I mean
Looms by the riverside.
Upstream to her I row;
The course is hard and high.
Upstream to her I go;
On the strand she seems nigh.

The reeds sway, sheen and sheen;
The white dew as e’er gleams.
The lady fair I mean
Stands on the bank, it seems.
Upstream to her I row;
The course turns left and right.
Upstream to her I go;
On the shoal she beams bright.

Janja

Key Features

  • 📝 Intuitive template syntax: Simple syntax for variables, conditionals, and loops.
  • 🔄 Layout and partials: Supports template inheritance and reusable components.
  • 🛠️ Built-in directives and filters: A collection of built-in directives and filters.
  • 🎨 Custom directives and filters: Ability to define custom directives and filters.
  • 🚀 Pre-compilation: Enhance rendering performance by precompiling.
  • 🐛 Error handling and debugging: Provides detailed error reporting and debugging support.
  • 🛡️ Security: Automatic escaping.
  • 🛫 Asynchronous data loading: Supports fetching and displaying remote data asynchronously.
  • 🌐 Universal compatibility: Works in both Node.js and browser environments.
  • 📦 Zero dependencies: Lightweight with no external dependencies.

Play Online

StackBlitz

Getting Started

import { render } from 'janja'

document.body.innerHTML = await render('Hello, {{= name }}!', { name: 'World' })

or

import { renderFile } from 'janja'

document.body.innerHTML = await renderFile('./template.html', { name: 'World' })

Documentation

License

Janja is released under the MIT License. You are free to use, modify, and distribute it as long as you comply with the license terms.