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 🙏

© 2024 – Pkg Stats / Ryan Hefner

eslit

v6.0.0

Published

Write templates with embedded JavaScript expressions

Downloads

2,170

Readme

ESLit

NPM Version Build Status Licensing

ESLit lets you write templates with embedded JavaScript expressions.

npm install eslit --save-dev

ESLit templates are easy to use because they’re powered by web standards. Content is read as Template Literals with automatically resolving Promises.

<!-- some/template.html -->
<h1>${heading}</h1>
<table>
  ${people.map(person => `<tr>
    <td>${person.given}</td>
    <td>${person.family}</td>
  </tr>`)}
</table>
const eslit = require('eslit');

eslit('some/template', {
  heading: Promise.resolve('Guest List'),
  people: [{
    given: 'Martin',
    family: 'Brody'
  }, {
    given: 'Bruce',
    family: 'Shark'
  }]
}).then(console.log);
<h1>Guest List</h1>
<table>
  <tr>
    <td>Martin</td>
    <td>Brody</td>
  </tr><tr>
    <td>Bruce</td>
    <td>Shark</td>
  </tr>
</table>

You can also use import functions to include other templates.

<h1>${heading}</h1>

<table>
  ${import('./some/table') /* includes some/table.html */}
</table>

Alternatively, the include function lets you specify additional data.

<h1>${heading}</h1>

<table>
  ${import('./some/table', { additional: 'data' })}
</table>

Usage

ESLit returns a Promise to render content once its embedded Promises are resolved.

eslit(src, data, options);
  • src: the path or package id being imported.
  • data: the data used by the template.
  • Options
    • cwd: the path used by imports (default: process.cwd()).
    • prefixes: the file prefixes sometimes used by imports (default: [ "_" ]).
    • extensions: the file extensions sometimes used by imports (default: [ ".html", ".jsx" ]).
    • globopts: the options passed into node-glob.

Notes:

  • Paths are relative to the current file or the current working directory.
  • Paths may use glob patterns or omit prefixes and extensions
  • Node modules are supported, using the package template or main keys, or by using index.html

ESLit.parse

The parse function returns a promise to render the template string once its embedded promises are resolved.

eslit.parse( string, data, { cwd, prefixes, extensions, globopts } );

string: The string parsed as a template.

ESLit.resolve

The resolve function returns a Promise that is resolved once its embedded promises have resolved.

eslit.resolve`Template literal to be ${Promise.resolve('resolved')}`;

Syntax Helpers

Sublime Text
  1. Install the Babel Package.
  2. Select Tools > Developer > New Syntax.
  3. Paste this syntax.
  4. Save the file as Lit Template (Babel).sublime-syntax.