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

reiny

v0.5.3

Published

Template engine for React

Downloads

48

Readme

Reiny

Template engine for React / Mithril / Mercury

npm install reiny --save
apm install language-reiny

Goals

  • Jade like template engine
  • Generate react/mithril/mercury element
  • Inline css friendly
  • Inline babel preprocessor
  • Inline propTypes

Example

template.reiny

// declare propTypes
@greeting: string
@items: number[]

// props and inline style
.main.container(
  data-id = 'this-is-id'
) {
  background-color: #eee
  width: 640px
  height: { 40 * 12 }
  font-size: 1em
}
  // text
  h1 This is a title

  // ref alias by & modifier
  foo&foo

  | expand with span
  span = @greeting

  // if syntax
  if false
    a hoge fuga aaa

  // inline expression
  if { 2 > 1 }
    a(key='fooo') hoge fuga aaa

  // for syntax
  ul
    for i in @items
      li(key=i) = i

  // object mixin as property
  - let o = {'data-a': 'aaa', 'data-b': 'bbb'};
  .foo(
    > o
    onClick = {- function(){console.log('foo')} -}
  )

  // mutli line code
  ---
  let Foo = React.createClass({
    render: () => {
      return React.createElement('div', {className: 'foo'});
    }
  })
  ---
  // CamelCase becomes element reference
  Foo()

  // Embed element direactly
  - var el = React.createElement(Foo, {})
  +(el)
npm install -g reiny
reiny template.reiny -o template.js

or node module

var reiny = require('reiny/lib');
reiny.compile('foo.bar(prop=1) text'); // generate code string

How to Use

Use template with runner

npm install reiny --save-dev
global.React = require('react');
var template = require('./template');
var C = React.createClass({
  propTypes: template.propTypes || {},
  render: function(){
    return template(this.props);
  }
});

console.log(React.renderToStaticMarkup(
  React.createElement(C, {greeting: 'hello', items: [1, 2]})
));
<div data-id="this-is-id" style="background-color:#eee;width:640px;height:480px;font-size:1em;" class="main container">
  <h1>This is a title</h1>
  <span>expand with span</span>
  <span>hello</span>
  <a>hoge fuga aaa</a>
  <ul>
    <li>1</li>
    <li>2</li>
  </ul>
  <div data-a="aaa" data-b="bbb" class="foo"></div>
  <div class="foo"></div>
  <div class="foo"></div>
</div>

SCSS Compiler(experimental)

.foo {
  color: 'green'
}
  if true
    if true
      .quux {
        color: #eee
      }
  .bar {
    color: 'red'
  }
    .baz {
      color: 'blue'
    }
    if false
      .fuba {
        color: value
      }

to

reiny template.reiny --scss
.foo {
  color:'green';
  .bar {
    color:'red';
    .baz {
      color:'blue';
    }
    .fuba {
      color:$value;
    }
  }
  .quux {
    color:'#eee';
  }
}

How to develop

./script/build

LICENSE

MIT