var gulp = require('gulp'); var concat = require('gulp-concat'); var uglify = require('gulp-uglifyjs'); var header = require('gulp-header'); var jshint = require('gulp-jshint'); var todo = require('gulp-todo'); var gulputil = require('gulp-util'); var replace = require('gulp-replace'); var webpack = require('gulp-webpack'); var beautify = require('gulp-jsbeautifier');
var moment = require('moment'); var pkg = require('./package.json');
var banner =
'/*!\n\n' + '<%= pkg.officialName %> - <%= pkg.summary %>\nVersion <%= pkg.version %>+<%= build %>\n' + '\u00A9 <%= year %> <%= pkg.author.name %> - <%= pkg.author.url %>\n\n' + 'Site: <%= pkg.homepage %>\n'+ 'Issues: <%= pkg.bugs.url %>\n' + 'License: <%= pkg.license.url %>\n\n' + '*/\n';
function generateBuild(){
var date = new Date; return Math.floor((date - (new Date(date.getFullYear(),0,0)))/1000).toString(36)
}
var build = generateBuild();
gulp.task('jshint', ['beautify'], function () {
return gulp.src('src/**/*.js') .pipe(jshint()) .pipe(jshint.reporter('default'));
});
gulp.task('todo', function(){
return gulp.src('src/holder.js') .pipe(todo()) .pipe(gulp.dest('./'));
});
gulp.task('build', ['jshint'], function () {
return gulp.src('src/holder.js') .pipe(webpack({ output: { library: 'Holder', filename: 'holder.js', libraryTarget: 'umd' } })) .pipe(gulp.dest('./'));
});
gulp.task('bundle', ['build'], function () {
return gulp.src(['src/polyfills.js', 'holder.js']) .pipe(concat('holder.js')) .pipe(gulp.dest('./'));
});
gulp.task('minify', ['bundle'], function () {
return gulp.src("holder.js") .pipe(uglify("holder.min.js")) .pipe(gulp.dest("./"));
});
gulp.task('banner', ['minify'], function () {
return gulp.src(["holder*.js"]) .pipe(replace('%version%', pkg.version)) .pipe(header(banner, { pkg: pkg, year: moment().format("YYYY"), build: build })) .pipe(gulp.dest("./"));
});
gulp.task('beautify', function () {
return gulp.src(['src/*.js']) .pipe(beautify()) .pipe(gulp.dest('src/'));
});
gulp.task('watch', function(){
gulp.watch('src/*.js', ['default']);
});
gulp.task('default', ['todo', 'bundle', 'minify', 'banner'], function(){
gulputil.log("Finished build "+build); build = generateBuild();
});