gulp-twig2html

Gulp plugin that compile twig templates to html pages.

Usage no npm install needed!

<script type="module">
  import gulpTwig2html from 'https://cdn.skypack.dev/gulp-twig2html';
</script>

README

gulp-twig2html pipeline status

Gulp plugin that compile twig templates to html pages.

Build upon Twig.js, the JS port of the Twig templating language by John Roepke.

Install

npm install gulp-twig2html --save

The "twig2html" task

Usage

const gulp = require('gulp');
const rename = require('gulp-rename');
const twig2html = require('gulp-twig2html');

gulp.task('twig2html', () => {
  return gulp.src('src/*.twig')
    .pipe(twig2html({
        // Task-specific options go here.
    }))
    .pipe(rename({ extname: '.html' }))
    .pipe(gulp.dest('dist'));
});

Options

options.globals

Type: String Default value: ''

Path to JSON file with global context variables.

options.extensions

Type: Array Default value: []

Can be an array of functions that extend TwigJS with custom tags.

options.functions

Type: Object Default value: {}

Object hash defining functions in TwigJS.

options.filters

Type: Object Default value: {}

Object hash defining filters in TwigJS.

options.context

Type: Object Default value: {}

Object hash defining templates context variables.

options.separator

Type: String Default value: '\n'

A string that is inserted between each compiled template when concatenating templates.

options.namespaces

Type: Object Default value: {}

Object hash defining namespaces.

Usage Examples

const gulp = require('gulp');
const rename = require('gulp-rename');
const twig2html = require('gulp-twig2html');

gulp.task('twig2html', () => {
  return gulp.src('src/*.html')
    .pipe(twig2html({
        context: {}, // task specific context object hash
        globals: 'path/to/globals.json'
    }))
    .pipe(rename({ extname: '.html' }))
    .pipe(gulp.dest('dist'));
});

Context hierarchy

Template context extends in this order:

  • options.context if provided
  • options.globals if provided
  • template JSON context files (stored in template path, with same name, example: /templates/index.json for /templates/index.twig) if provided

Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using ESLint and Jest.

Sponsored by

DesignDepot

Release History

See the CHANGELOG.