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

rollup-plugin-pug

v1.1.1

Published

Transforms Pug (aka Jade) templates to ES6 modules.

Downloads

1,404

Readme

rollup-plugin-pug

License npm Version Linux build Status Windows build status

Rollup plugin that transforms Pug v2 templates to ES6 modules.

  • Dynamic generation of HTML. Static HTML is optional and configurable.
  • Automatic import of the pug-runtime in your bundle, if required.
  • Automatic import of template extends and includes.
  • Source map support.
  • Support for ES6 import statements (moved out of the template).
  • Typescript v3.x definitions.

IMPORTANT

v1.1 requires Rollup 0.61 and node.js 6 or later, for previous versions use rollup-plugin-pug 0.1.6

Installation

npm install rollup-plugin-pug --save-dev

Usage

Create the template

//- template.pug
p= message

and import it as any other function:

import templateFn from './template.pug';

const context = { message: 'Hello World' };

console.log(templateFn(context));  // <p>Hello World</p>

or rename it for static compilation and import it as string:

import htmlString from './template.static.pug';

console.log(htmlString);  // <p>Hello World</p>

Build with something like...

import { rollup } from 'rollup';
import pug from 'rollup-plugin-pug';

rollup({
  entry: 'src/main.js',
  plugins: [
    pug({
      locals: { message: 'Hello World' }
    })
  ]
}).then(...)

That's it.

Options

In addition to the regular pug options, the plugin defines these:

  • staticPattern - Regex for files to compile and evaluate at build time to export plain HTML.
  • locals - Plain JavaScript object with values passed to the compiler for static compilation (Deprecated).
  • include - minimatch or array of minimatch with files that should be included by default.
  • exclude - minimatch or array of minimatch with files that should be excluded by default.
  • extensions - Array of extensions to process (don't use wildcards here).
  • pugRuntime - Custom Pug runtime filename (See note).
  • sourceMap - Enabled by default.

TIP: Use staticPattern: /\S/ to evaluate all the templates at build time.

Be carefull

The parameter passed to the static templates is a shallow copy of the plugin options. Do not change it unless you know what you doing.

When a template matches the staticPattern regex, the template is executed at complie-time and you load the resulting string through import at runtime, so it will not have access to runtime variables or methods. Instead, the plugin passes its options to the template at compile-time.

Default Options

The plugin has preset the following options:

{
  doctype: 'html',
  basedir: absolute(input),       // absolute path of the rollup `input` option
  compileDebug: false,            // `true` is recommended for development
  sourceMap: true,                // with or without compileDebug option
  inlineRuntimeFunctions: false,  // use the pug runtime
  extensions: ['.pug', '.jade'],
  staticPattern: /\.static\.(?:pug|jade)$/
}

See the full list and explanation in the API Documentation of the pug site.

Note: The default of staticPattern was defined to be compatibile with the old Jade plugin and so it has remained, but I prefer /\.html\.pug$/.

Custom runtime

The pugRuntime option can be set to false to avoid importing the runtime, but you must provide an equivalent pug object accessible to the template:

Disable the predefined runtime in rollup.config.js

  ...
  plugins: [
    pug({ pugRuntime: false })
  ]

and import the yours in your .pug files

- import pug from 'my-runtime'
p= name
//- ...etc

but the recommended option is name it in the config:

  // in rollup.config.js
   ...
   plugins: [
     pug({ pugRuntime: 'my-runtime' })
   ]

Search for "pugRuntime" in the test/run.js file to see examples.

What's New

v1.1.1

  • #14: fix (this.warn is not a function) - thanks to @leptonix

See the CHANGELOG for more changes.

Support my Work

I'm a full-stack developer with more than 20 year of experience and I try to share most of my work for free and help others, but this takes a significant amount of time and effort so, if you like my work, please consider...

Of course, feedback, PRs, and stars are also welcome 🙃

Thanks for your support!