182 lines
4.6 KiB
JavaScript
182 lines
4.6 KiB
JavaScript
var gulp = require('gulp');
|
|
var $ = require('gulp-load-plugins')();
|
|
|
|
var getPackageJson = function() {
|
|
var fs = require('fs');
|
|
return JSON.parse(fs.readFileSync('./package.json', 'utf8'));
|
|
};
|
|
|
|
var banner = [
|
|
'/*!',
|
|
' * ,/',
|
|
' * ,\'/',
|
|
' * ,\' /',
|
|
' * ,\' /_____,',
|
|
' * .\'____ ,\'',
|
|
' * / ,\'',
|
|
' * / ,\'',
|
|
' * /,\'',
|
|
' * /\'',
|
|
' *',
|
|
' * Selectric \u03DF v<%= pkg.version %> (<%= new Date().toString().substr(4, 11) %>) - http://lcdsantos.github.io/jQuery-Selectric/',
|
|
' *',
|
|
' * Copyright (c) <%= new Date().getFullYear() %> Leonardo Santos; MIT License',
|
|
' *',
|
|
' */\n\n'
|
|
].join('\n');
|
|
|
|
var bannerSmall = '/*! Selectric \u03DF v<%= pkg.version %> (<%= new Date().toJSON().slice(0,10) %>) - git.io/tjl9sQ - Copyright (c) <%= new Date().getFullYear() %> Leonardo Santos - MIT License */\n';
|
|
|
|
var bannerCSS = [
|
|
'/*======================================',
|
|
' Selectric v<%= pkg.version %>',
|
|
'======================================*/\n\n'
|
|
].join('\n');
|
|
|
|
|
|
/**
|
|
* Bump version
|
|
*/
|
|
gulp.task('bump', function() {
|
|
var pkg = getPackageJson();
|
|
var newVersion = $.util.env.bump || pkg.version;
|
|
|
|
return gulp.src(['./package.json', './bower.json', './selectric.jquery.json'])
|
|
.pipe($.bump({
|
|
version: newVersion
|
|
}))
|
|
.pipe(gulp.dest('./'));
|
|
});
|
|
|
|
|
|
/**
|
|
* JavaScript
|
|
*/
|
|
gulp.task('lint', function() {
|
|
return gulp.src(['./src/**/*.js'])
|
|
.pipe($.eslint('.eslintrc'))
|
|
.pipe($.eslint.format());
|
|
});
|
|
|
|
gulp.task('js', ['lint'], function() {
|
|
var pkg = getPackageJson();
|
|
|
|
return gulp.src(['src/jquery.selectric.js'])
|
|
.pipe($.header(banner, { pkg: pkg }))
|
|
.pipe(gulp.dest('./public'))
|
|
.pipe($.connect.reload());
|
|
});
|
|
|
|
gulp.task('js-min', function() {
|
|
var pkg = getPackageJson();
|
|
|
|
return gulp.src(['./src/jquery.selectric.js'])
|
|
.pipe($.uglify())
|
|
.pipe($.header(bannerSmall, { pkg: pkg }))
|
|
.pipe($.rename({ suffix: '.min' }))
|
|
.pipe(gulp.dest('./public'))
|
|
.pipe($.connect.reload());
|
|
});
|
|
|
|
gulp.task('js-plugins', ['lint'], function() {
|
|
var pluginData = {
|
|
date: new Date().toJSON().slice(0, 10),
|
|
year: new Date().getFullYear()
|
|
};
|
|
|
|
return gulp.src(['*.js'], { cwd: './src/plugins/' })
|
|
.pipe($.template(pluginData))
|
|
.pipe(gulp.dest('./public/plugins/'))
|
|
.pipe($.uglify({ preserveComments: 'license' }))
|
|
.pipe($.rename({ suffix: '.min' }))
|
|
.pipe(gulp.dest('./public/plugins/'))
|
|
.pipe($.connect.reload());
|
|
});
|
|
|
|
|
|
/**
|
|
* CSS
|
|
*/
|
|
gulp.task('css', function() {
|
|
var pkg = getPackageJson();
|
|
|
|
return gulp.src('./src/selectric.scss')
|
|
.pipe($.sass({ outputStyle: 'expanded' }))
|
|
.pipe($.autoprefixer({ browsers: ['last 2 versions', '> 1%', 'ie 8', 'ie 7'] }))
|
|
.pipe($.header(bannerCSS, { pkg: pkg }))
|
|
.pipe(gulp.dest('./public'))
|
|
.pipe($.connect.reload());
|
|
});
|
|
|
|
gulp.task('themes-css', function() {
|
|
return gulp.src('**/*.scss', { cwd: './src/themes/' })
|
|
.pipe($.sass({ outputStyle: 'expanded' }))
|
|
.pipe($.autoprefixer({ browsers: ['last 2 versions', '> 1%', 'ie 8', 'ie 7'] }))
|
|
.pipe(gulp.dest('./public/themes/'));
|
|
});
|
|
|
|
gulp.task('plugins-css', function() {
|
|
return gulp.src('**/*.scss', { cwd: './src/plugins/' })
|
|
.pipe($.sass({ outputStyle: 'expanded' }))
|
|
.pipe($.autoprefixer({ browsers: ['last 2 versions', '> 1%', 'ie 8', 'ie 7'] }))
|
|
.pipe(gulp.dest('./public/plugins/'));
|
|
});
|
|
|
|
|
|
/**
|
|
* Live preview
|
|
*/
|
|
gulp.task('serve', function() {
|
|
$.connect.server({
|
|
root: './public',
|
|
livereload: true
|
|
});
|
|
});
|
|
|
|
gulp.task('html', function() {
|
|
return gulp.src('./public/*.html')
|
|
.pipe($.connect.reload());
|
|
});
|
|
|
|
|
|
/**
|
|
* Watch
|
|
*/
|
|
gulp.task('watch', ['serve'], function() {
|
|
gulp.watch(['*.js'], { cwd: './src/' }, ['js', 'js-min']);
|
|
gulp.watch(['*.js'], { cwd: './src/plugins/' }, ['js-plugins']);
|
|
gulp.watch(['*.scss'], { cwd: './src/' }, ['css']);
|
|
gulp.watch(['**/*.scss'], { cwd: './src/themes/' }, ['themes-css']);
|
|
gulp.watch(['**/*.scss'], { cwd: './src/plugins/' }, ['plugins-css']);
|
|
gulp.watch(['*.html'], { cwd: './public/' }, ['html']);
|
|
});
|
|
|
|
|
|
/**
|
|
* ZIP
|
|
*/
|
|
gulp.task('zip', function() {
|
|
var pkg = getPackageJson();
|
|
|
|
return gulp.src('./public/**/*')
|
|
.pipe($.zip('selectric_v' + pkg.version + '.zip'))
|
|
.pipe(gulp.dest('./'));
|
|
});
|
|
|
|
|
|
/**
|
|
* GitHub Pages
|
|
*/
|
|
gulp.task('gh-pages', function() {
|
|
return gulp.src('./public/**/*')
|
|
.pipe($.ghPages());
|
|
});
|
|
|
|
|
|
/**
|
|
* Default tasks
|
|
*/
|
|
gulp.task('build', ['bump', 'js', 'js-min', 'js-plugins', 'css', 'themes-css', 'plugins-css']);
|
|
gulp.task('default', ['build', 'watch']);
|
|
gulp.task('release', ['bump', 'build', 'zip']);
|
|
gulp.task('publish', ['gh-pages']); |