JSPM

  • Created
  • Published
  • Downloads 975761
  • Score
    100M100P100Q182094F
  • License MIT

Lightweight, fast, and powerful embedded JS template engine

Package Exports

  • eta

Readme

eta (Ξ·)

Documentation - Chat - RunKit Demo - Playground

GitHub package.json version (master) Travis All Contributors Coveralls Donate

You're viewing the source for Eta v3, which we just released! For v2, visit the old branch.

Summary

Eta is a lightweight and blazing fast embedded JS templating engine that works inside Node, Deno, and the browser. It's written in TypeScript and emphasizes great performance, configurability, and small bundle size.

🌟 Features

  • πŸ“¦ 0 dependencies
  • πŸ’‘ Only ~3.5 KB minzipped
  • ⚑️ Written in TypeScript
  • ✨ Deno support (+ Node and browser)
  • πŸš€ Super Fast
  • πŸ”§ Configurable
    • Plugins, custom delimiters, caching
  • πŸ”¨ Powerful
    • Precompilation, partials, async
    • Layout support!
  • πŸ”₯ Reliable
    • Better quotes/comments support
      • ex. <%= someval + "string %>" %> compiles correctly, while it fails with doT or EJS
    • Great error reporting
  • ⚑️ Exports ES Modules as well as UMD
  • πŸ“ Easy template syntax

Get Started

For more thorough documentation, visit https://eta.js.org

Install Eta

npm install eta

In the root of your project, create templates/simple.eta

Hi <%= it.name %>!

Then, in your JS file:

import { Eta } from "eta";

const eta = new Eta({ views: path.join(__dirname, "templates") });

// Render a template

const res = eta.render("./simple", { name: "Ben" });
console.log(res); // Hi Ben!

FAQs

Where did Eta's name come from?

"Eta" means tiny in Esperanto. Plus, it can be used as an acronym for all sorts of cool phrases: "ECMAScript Template Awesomeness", "Embedded Templating Alternative", etc....

Additionally, Eta is a letter of the Greek alphabet (it stands for all sorts of cool things in various mathematical fields, including efficiency) and is three letters long (perfect for a file extension).


Integrations

Visual Studio Code

@shadowtime2000 created eta-vscode.

ESLint

eslint-plugin-eta was created to provide an ESLint processor so you can lint your Eta templates.

Webpack

Currently there is no official Webpack integration but @clshortfuse shared the loader he uses:

{
  loader: 'html-loader',
  options: {
    preprocessor(content, loaderContext) {
      return eta.render(content, {}, { filename: loaderContext.resourcePath });
    },
  },
}
Node-RED

To operate with Eta templates in Node-RED: @ralphwetzel/node-red-contrib-eta

image

Projects using eta

  • Docusaurus v2: open-source documentation framework that uses Eta to generate a SSR build
  • swagger-typescript-api: Open source typescript api codegenerator from Swagger. Uses Eta as codegenerator by templates
  • html-bundler-webpack-plugin: Webpack plugin make easily to bundle HTML pages from templates, source styles and scripts
  • SmartDeno: SmartDeno is an easy to setup web template using Deno & Oak
  • Add yours!

Contributors

Made with ❀ by @nebrelbug and all these wonderful contributors (emoji key):

Ben Gubler
Ben Gubler

πŸ’» πŸ’¬ πŸ“– ⚠️
Clite Tailor
Clite Tailor

πŸ€” πŸ’»
Ioan CHIRIAC
Ioan CHIRIAC

πŸ’» πŸ€”
Craig Morten
Craig Morten

πŸ’»
Rajan Tiwari
Rajan Tiwari

πŸ’‘
shadowtime2000
shadowtime2000

πŸ’» πŸ€” ⚠️
Hamza Hamidi
Hamza Hamidi

πŸ“–
Calum Knott
Calum Knott

πŸ€”
nhaef
nhaef

πŸ’»
GΓΌn
GΓΌn

πŸ’»

This project follows the all-contributors specification. Contributions of any kind are welcome!

Credits

  • Async support, file handling, and error formatting were based on code from EJS, which is licensed under the Apache-2.0 license. Code was modified and refactored to some extent.
  • Syntax and some parts of compilation are heavily based off EJS, Nunjucks, and doT.