schwartzman

0.9.2 • Public • Published

schwartzman

Webpack loader for Mustache. Compiles jsx.mustache files to ReactJS.

in-browser demo

why?!

Because "built-in" server-side prerender of react components requires JS VM — JSX allows for pretty complex expressions. On the other hand, every language has library for rendering Mustache templates[citation needed]. Plus, Mustache is very simple and basic. So simple, that it's easier to write a Mustache-to-JS compiler than a JSX parser for Python/Perl/PHP/Pascal/P

installation

$ npm install --save-dev schwartzman

And add to your webpack.config.js

  • {test: /\.jsx\.mustache$/, loader: "schwartzman"} to module.loaders
    • ⚠️ if you use partials, you'll need to "wrap" this loader with babel-loader or any other dependency solving loader

      {test: /\.jsx\.mustache$/, loader: "babel-loader!schwartzman"}

  • ".jsx.mustache" to resolve.extensions
module.exports = {
  entry: {
    // ...
  },
  output: {
    // ...
  },
  module: {
    loaders: [
      // ...
      {test: /\.jsx\.mustache$/, loader: "schwartzman"},
    ],
  },
  resolve: {
    extensions: [
      // ...
      ".jsx.mustache",
    ],
    // ...
  }
  // ...
}

supported mustache blocks (with some limitations for attributes):

  • {{ variable }} and {{{ escaped_variables }}}
  • {{# section }}
  • {{^ inverted_section }}
  • {{! comment }}
  • {{> partial }}

development

$ npm i
$ npm test

Dependencies (1)

Dev Dependencies (15)

Package Sidebar

Install

npm i schwartzman

Weekly Downloads

1

Version

0.9.2

License

MIT

Unpacked Size

75.6 kB

Total Files

4

Last publish

Collaborators

  • zemlanin