var gulp = require('gulp'); var handlebars = require('gulp-handlebars'); var declare = require('gulp-declare'); var concat = require('gulp-concat'); var wrapAmd = require('gulp-wrap-amd'); var wrap = require("gulp-wrap"); var path = require('path'); var streamqueue = require('streamqueue'); var paths = require('./paths.js'); var bom = require('./pipelines/gulp-bom.js'); gulp.task('handlebars', function () { var coreStream = gulp.src([paths.src.templates, '!*/**/*Partial.*']) .pipe(bom()) .pipe(handlebars()) .pipe(declare({ namespace: 'T', noRedeclare: true, processName: function (filePath) { filePath = path.relative(paths.src.root, filePath); return filePath.replace(/\\/g, '/') .toLocaleLowerCase() .replace('template', '') .replace('.js', ''); } })); var partialStream = gulp.src([paths.src.partials]) .pipe(bom()) .pipe(handlebars()) .pipe(wrap('Handlebars.template(<%= contents %>)')) .pipe(wrap('Handlebars.registerPartial(<%= processPartialName(file.relative) %>, <%= contents %>)', {}, { imports: { processPartialName: function (fileName) { return JSON.stringify( path.basename(fileName, '.js') ); } } })); return streamqueue({ objectMode: true }, partialStream, coreStream ).pipe(concat('templates.js')) .pipe(wrapAmd({ deps: ['handlebars'], params: ['Handlebars'], exports: 'this["T"]' })) .pipe(gulp.dest(paths.dest.root)); });