1.0.2 • Published 8 years ago

gulp-nunjucks-with-env v1.0.2

Weekly downloads
1
License
MIT
Repository
github
Last release
8 years ago

gulp-nunjucks-with-env

Use Nunjucks Environment Class to get more control

Issues with the output should be reported on the Nunjucks issue tracker.

Install

Install with npm

npm install --save-dev gulp-nunjucks-with-env

Example : Using Environment Class

var gulp = require('gulp');
var nunjucksRender = require('gulp-nunjucks-with-env');

var environment = nunjucksRender.nunjucks.configure(['src/templates/']);
environment.addFilter('stringify', function(obj) {
    return JSON.stringify(obj);
});
nunjucksRender = nunjucksRender.bind(nunjucksRender,environment);

gulp.task('default', function () {
	return gulp.src('src/templates/*.html')
		.pipe(nunjucksRender())
		.pipe(gulp.dest('dist'));
});

Check Nunjucks API for more information on Environment Class

Note: To keep Nunjucks render from eating up all your ram, make sure to specify your watch path. nunjucksRender.nunjucks.configure(['src/path/to/templates/']); This will also allow you to define your paths relatively.

Example : Using with gulp data

var gulp = require('gulp');
var nunjucksRender = require('gulp-nunjucks-render');
var data = require('gulp-data');

function getDataForFile(file){
    return {
        example: 'data loaded for ' + file.relative
    };
}

gulp.task('default', function () {
	nunjucksRender.nunjucks.configure(['src/templates/']);
	return gulp.src('src/templates/*.html')
	  .pipe(data(getDataForFile))
		.pipe(nunjucksRender())
		.pipe(gulp.dest('dist'));
});

Example : Using with pass by reference globals

var gulp = require('gulp');
var nunjucksRender = require('gulp-nunjucks-with-env');

var environment = nunjucksRender.nunjucks.configure(['src/templates/']);
environment.addFilter('stringify', function(obj) {
    return JSON.stringify(obj);
});
var files = {widgetFiles : []};
templateEngine = templateEngine.bind(templateEngine,environment,{},files);

gulp.task('task', function () {
	return gulp.src('src/templates/*.html')
		.pipe(nunjucksRender())
		.pipe(gulp.dest('dist'));
});

gulp.task('newtask',['task'],function() {
  return gulp.src(files.widgetFiles)
		.pipe(/*Some Task*/)
});

API

nunjucksRender(environment, context, passByReferenceGlobals)

environment (optional) Environment Class : Environment Class

context (optional) Object : Same context as nunjucks.render() Note : You will have to pass empty object {}, if you want to use passByReferenceGlobals

passByReferenceGlobals (optional) Object : Parameters from this object will be added to context through pass by reference rather than pass by value

Example :

nunjucksRender(environment,{css_path: 'http://company.com/css/'});

or

nunjucksRender({css_path: 'http://company.com/css/'});

For the following template

<link rel="stylesheet" href="{{ css_path }}test.css" />

Would render

<link rel="stylesheet" href="http://company.com/css/test.css" />

License

MIT © AvcS

Shout-outs

Sindre Sorhus who wrote the original gulp-nunjucks for precompiling Nunjucks templates.

Carlos G. Limardo updated this to render instead of precompile in gulp-nunjucks-render

I updated this to facilitate using of Environment Class for more control