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

@frctl/consolidate

v1.0.1

Published

Generic template engine adapter for Fractal, powered by consolidate.js

Downloads

114

Readme

Consolidate Adapter

Generic template engine adapter for Fractal, powered by consolidate.js.

NPM Version

If a specific Fractal template engine adapter for your desired language is available then it is recommended to use that instead as it will likely be easier to use and configure than this generic handler.

Currently specific template engine adapters have been implemented for:

Note: Due to the way that Consolidate handles loading of templates, this engine cannot be used for rendering pages, only components.

Usage

1. Install the consolidate engine adapter

npm i @frctl/consolidate --save

2. Install the template language parser

As an example, to use Swig templates, first you need to install Swig:

npm i swig --save

2. Add configuration details

You then need to configure Fractal to use Swig via the Consolidate adapter:


const consolidate = require('@frctl/consolidate');
const swigAdapter = consolidate('swig');

fractal.engine(swigAdapter);  // use the consolidate/swig adapter

fractal.components.set('ext', '.swig'); // look for files with a .swig file extension

You can see a full list of supported template languages on the Consolidate documentation.

Template Engine Instances

You can customise the template engine instance once it has been if you want to add filters, globals, mixins etc.

For example, to extend the above example to use a customised instance of Swig you could do the following:

const swig        = require('swig');
const consolidate = require('@frctl/consolidate');

// Add a custom Swig filter
swig.setFilter('join', function (input, char) {
    return input.join(char);
});

const swigAdapter = consolidate('swig', swig); // pass in the customised swig instance to use instead of the default one

fractal.components.engine(swigAdapter); // set it to use as the template engine for components

fractal.components.set('ext', '.swig');

Special variables

The Consolidate adapter also makes a few special variables available to your templates. They all have names prefixed with an underscore to help prevent clashes with any context data variables that are set by the user.

Note that using these may tie your templates a little more tightly into Fractal so you may choose not to use them for that reason.

The actual syntax for accessing these variables will depend on the template engine that you use - Handlebars style variables are shown in the examples below.

_config

Contains the full Fractal configuration object. Useful for when you want to refer to a configuration item in your documentation (or components).

{{ _config.project.title }} <!-- outputs the project title -->
{{ _config.components.ext }} <!-- outputs the extension used for components -->

_self

Contains a simple data object representation of the top-level item (i.e. component or page) being rendered.

{{ _self.title }} <!-- outputs 'Button' -->

_target

This variable is only set in component preview layouts, and contains a simple data object representation of the item (i.e. component or page) being rendered within the preview layout.

{{ _target.title }} <!-- outputs 'Button' -->