| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 'use strict';
- const gulp = require('gulp');
- const gutil = require('gulp-util');
- const minifyCss = require('gulp-minify-css');
- const minifyHtml = require('gulp-minify-html');
- const through = require('through2');
- const concat = require('gulp-concat');
- const merge2 = require('merge2');
- const _ = require('underscore');
- const del = require('del');
- function templateCache() {
- const contentTpl = '_.cache.put(<%= name %>, <%= content %>);\n';
- let content = '/* Below are templates cached from `_.template` with love :) */\n\n';
- function bufferContents(file, enc, cb) {
- if (file.isNull()) return cb();
- if (file.isStream())
- return this.emit('error', new gutil.PluginError('VM-cache', 'Stream is not supported.'));
- content += gutil.template(contentTpl, {
- name: JSON.stringify(('/' + file.relative).replace(/\\/g, '/')),
- content: _.template(String(file.contents), {variable: 'it'}).source,
- file: '',
- });
- cb();
- }
- function endStream(cb) {
- this.push(new gutil.File({
- base: '',
- path: 'template.js',
- contents: new Buffer(content),
- }));
- cb();
- }
- return through.obj(bufferContents, endStream);
- }
- gulp.task('templates', function () {
- return merge2([
- gulp.src('src/cache.js'),
- gulp.src('src/**/templates/*.html').pipe(templateCache()),
- ]).pipe(concat('cache.js'))
- .pipe(gulp.dest('dist'));
- });
- gulp.task('clean', function () {
- return del(['dist']);
- });
- gulp.task('copy-files',function(){
- return gulp.src([
- 'src/**',
- '!src/cache.js',
- '!src/**/templates/**',
- '!src/**/templates',
- ], {base:'src'})
- .pipe(gulp.dest('dist/'));
- });
- gulp.task('default', ['templates', 'copy-files']);
|