Skip to content

A simple Nunjucks command-line (CLI) tool to compile and watch templates into static HTML files- with front-matter support.

License

Notifications You must be signed in to change notification settings

chriseaton/nunjucks-command

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nunjucks-Command

A simple Nunjucks command-line (CLI) tool to compile and watch templates into static HTML files.

In addition to rendering files with an input JSON blob, there is built-in support for a couple useful features:

  • Support for front-matter in your nunjucks templates.
  • Auto-generated template file slugs can be auto-injected into template data during render.
  • This package is not locked to any version of nunjucks, uses async/await, and has a minimal dependency list.

Installation

npm i -D nunjucks-command # local
npm i -g nunjucks-command # global

Usage

nunjucks <file|glob> [context] [options]

For convenience, process.env object is added to the context as env.

Front-Matter

Include the supported front-matter start {% fm %} and end {% endfm %} tags. Within these tags, add a valid JSON document. The values in this front-matter are assigned to the current context object for that rendered template only.

This will override any preset or added context data for that template, from that render-point onward.

For example the following would output a "hello mars!" message in the HTML:

{% fm %}
{
    "message": "hello mars!"
}
{% endfm %}
<html>
    {{message}}
</html>

Basic examples

nunjucks foo.tpl data.json

Compiles foo.tpl to foo.html with data from data.json (and variables from process.env as env).

nunjucks **/*.tpl

Compiles all .tpl files (including subdirectories), except the ones starting by _ (so you can use them as layouts).

Options

--path <directory>

-p <directory>

Path where the templates live. Default to the current working directory. See https://mozilla.github.io/nunjucks/api.html#configure

--out <directory>

-o <directory>

Output directory.

--slug

-s

Attach a "template.slug" property in data for each rendered file that represents the relative file path. This, for example, can be accessed in a nunjucks template: {{ template.slug }}

--watch

-w

Allows to keep track of file changes and render accordingly (except files starting by _).

--extension <ext>

-e <ext>

Extension for rendered files. Defaults to html.

--options <file>

-O <file>

Takes a json file as Nunjucks options. Defaults are :

{
    "trimBlocks": true,
    "lstripBlocks": true,
    "noCache": true
}

See https://mozilla.github.io/nunjucks/api.html#configure

Advanced examples

nunjucks foo.tpl -p src -o dist -O nj.json

Compiles src/foo.tpl to dist/foo.html, with nj.json as nunjucks environnement options.

nunjucks *.tpl data.json -w -p src

Compiles all .tpl files (except ones starting with _) in the src folder to the current working directory, with data.json as metadata, and keeps running in the background for files changes.

About

A simple Nunjucks command-line (CLI) tool to compile and watch templates into static HTML files- with front-matter support.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published