code: function nunjucks () {
  	const nunjucks = require(ProyPath('node_modules', 'nunjucks'));
  	const env = new nunjucks.Environment();
  	class Link {
  		constructor () {
  			this.tags = ['link'];
  		}
  		parse (parser, nodes, lexer) {
  			// get the tag token
  			let tok = parser.nextToken();
  
  			// parse the args and move after the block end. passing true
  			// as the second arg is required if there are no parentheses
  			let args = parser.parseSignature(null, true);
  			parser.advanceAfterBlockEnd(tok.value);
  
  			// parse the body and possibly the error block, which is optional
  			let body = parser.parseUntilBlocks('error', 'endlink');
  			let errorBody = null;
  			/* istanbul ignore next */
  			if (parser.skipSymbol('error')) {
  				parser.skip(lexer.TOKEN_BLOCK_END);
  				errorBody = parser.parseUntilBlocks('endlink');
  			}
  
  			parser.advanceAfterBlockEnd();
  
  			// See above for notes about CallExtension
  			return new nodes.CallExtension(this, 'run', args, [body, errorBody]);
  		}
  		run (context, url, body, errorBody) {
  			return new nunjucks.runtime.SafeString(makeLink(context.ctx, url, body));
  		}
  	}
  	env.addFilter('bundle', function (bundle) {
  		if (Kmetadata.bundles[bundle] === undefined) {
  			return '';
  		}
  		return new nunjucks.runtime.SafeString(Kmetadata.bundles[bundle].toString());
  	});
  	env.addFilter('i18n', _i18n);
  	env.addFilter('t', translate);
  	env.addExtension('Link', new Link());
  	return env;
  }
docs: Initialize nunjucks engine: bundle helper
  @type {function} nunjucks - returns the nunjucks instance