0.4.0 • Public • Published


A pragmatic javascript static generator. Uses Nunjucks as template engine.

Transitor is very young and may change frequently

$ npm i transistor --save-dev


You must create a javascript file, import Transistor and instenciate it with a config object as parameter.

const Transistor = require('transistor');

new Transistor({
    routes: [
            path: '/',
            template: 'homepage.html',
            path: '/works/:slug',
            template: 'works/entry.html',
            model: 'works.*'

You can see a (not) real life exemple here.

Config object properties

  • routes (array of objects, mandatory)
    Will specify wich files to render.
    Needs a path where to generate the file(s) and a template as skeleton.
    Model specify from wich part of the model the file(s) will be generated. Model is optionnal but needed when you want to generate a bunch a file from a model list (typically, blogposts).
  • locales (array of objects) You can define here your locales with the name you want inside the path you want. To tell Transistor a specific locale has to be in the root, you must simply skip the path parameter.
  • contents (string, default: 'contents')
    The input folder of your contents (will be the mirror of the Model)
  • templates (string, default: 'pages')
    The input folder of your templates
  • output (string, default: 'site')
    The folder where the result will be rendered
  • debug (boolean, default: false)
    Allow to display in the console the resulting model


Transistor uses Nunjucks. The see all the interactions you can do with, please see


Will return a _paginate object.

{% paginate transistor.model('works').range(3) %}

{% for name, entry in _paginate.entries %}
{% endfor %}

{% if _paginate.previousUrl|length > 0 %}
    <a href="{{_paginate.previousUrl}}">Previous page</a>
{% endif %}

{% for elem in _paginate.getPrevUrls(5) %}
    <a href="{{elem.url}}">{{}}</a>
{% endfor %}

The _paginate object

  • _paginate.entries
    A list of entries corresponding to the current page

  • _paginate.currentPage
    Return the current page number

  • _paginate.totalPages
    Return the total of the pages generated

  • _paginate.firstUrl
    Return the url of the first page

  • _paginate.lastUrl
    Return the url of the last page

  • _paginate.getPrevUrls(n)
    A method that fetches the lasts n pages numbers and it's url and return it as an array.

{% for prevUrls in _paginate.getPrevUrls(5) %}
    <a href="{{prevUrls.url}}">{{}}</a>
{% endfor %}
  • _paginate.getNextUrls(n) A method that fetches the next n pages numbers and it's url and return it as an array.
{% for nextUrls in _paginate.getNextUrls(5) %}
    <a href="{{nextUrls.url}}">{{}}</a>
{% endfor %}

Transistor engine

The model (everything under /contents by default) is always accessible with {{ transistor.model('model.pattern') }} and supports these methods:

  • .limit(n)
    Limit the length of the given object

  • .range(n)
    Will return the given object divided in multiple parts.


    'elem-1': {
    'elem-2': {
    'elem-3': {

with .range(2), will gives

    '1': {
        'elem-1': {
        'elem-2': {
    '2': {
        'elem-3': {

Very usefull to make paginations




Package Sidebar


npm i transistor

Weekly Downloads






Last publish


  • ineghi