mirror of
https://github.com/imsky/holder.git
synced 2026-04-21 03:01:19 -04:00
116 lines
3.0 KiB
JavaScript
116 lines
3.0 KiB
JavaScript
var beautify = require('gulp-jsbeautifier');
|
|
var concat = require('gulp-concat');
|
|
var eslint = require('gulp-eslint');
|
|
var gulp = require('gulp');
|
|
var gulputil = require('gulp-util');
|
|
var header = require('gulp-header');
|
|
var rename = require('gulp-rename');
|
|
var replace = require('gulp-replace');
|
|
var todo = require('gulp-todo');
|
|
var uglify = require('gulp-uglify');
|
|
var webpack = require('webpack-stream');
|
|
|
|
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 %>\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('lint', function() {
|
|
return gulp.src([
|
|
'src/lib/*.js',
|
|
'src/lib/renderers/*.js',
|
|
'src/renderers/*.js',
|
|
'src/index.js'
|
|
])
|
|
.pipe(eslint())
|
|
.pipe(eslint.format())
|
|
.pipe(eslint.failAfterError());
|
|
});
|
|
|
|
gulp.task('todo', function() {
|
|
return gulp.src([
|
|
'src/lib/*.js',
|
|
'src/lib/renderers/*.js',
|
|
'src/renderers/*.js',
|
|
'src/index.js'
|
|
])
|
|
.pipe(todo())
|
|
.pipe(gulp.dest('./'));
|
|
});
|
|
|
|
gulp.task('build', ['lint'], function() {
|
|
return gulp.src('src/index.js')
|
|
.pipe(webpack({
|
|
output: {
|
|
library: 'Holder',
|
|
filename: 'holder.js',
|
|
libraryTarget: 'umd'
|
|
}
|
|
}))
|
|
.pipe(gulp.dest('./'));
|
|
});
|
|
|
|
gulp.task('bundle', ['build'], function() {
|
|
return gulp.src([
|
|
'src/lib/vendor/polyfills.js',
|
|
'holder.js',
|
|
'src/meteor/shim.js'
|
|
])
|
|
.pipe(concat('holder.js'))
|
|
.pipe(gulp.dest('./'));
|
|
});
|
|
|
|
gulp.task('minify', ['bundle'], function() {
|
|
return gulp.src('holder.js')
|
|
.pipe(uglify())
|
|
.pipe(rename('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/lib/*.js'])
|
|
.pipe(beautify())
|
|
.pipe(gulp.dest('src/lib/'));
|
|
});
|
|
|
|
gulp.task('meteor', function() {
|
|
return gulp.src('src/meteor/package.js')
|
|
.pipe(replace('%version%', pkg.version))
|
|
.pipe(replace('%summary%', pkg.description))
|
|
.pipe(gulp.dest('./'));
|
|
});
|
|
|
|
gulp.task('watch', function() {
|
|
gulp.watch('src/*.js', ['default']);
|
|
});
|
|
|
|
gulp.task('default', ['bundle', 'minify', 'banner', 'meteor'], function() {
|
|
gulputil.log('Finished build ' + build);
|
|
build = generateBuild();
|
|
});
|