gest366/gulpfile.js

200 lines
5.7 KiB
JavaScript

var gulp = require('gulp');
var mainBowerFiles = require('main-bower-files');
var bowerMain = require('bower-main');
var del = require('del');
var uglify = require('gulp-uglify');
var uglifyCSS = require('gulp-uglifycss');
var flatten = require('gulp-flatten');
var rename = require('gulp-rename');
var rename = require('gulp-rename');
var jsonMinify = require('gulp-json-minify');
var concat = require('gulp-concat');
var concatCss = require('gulp-concat-css');
var less = require('gulp-less');
var bowerDirectory = 'bower_components';
var directoryAssets = "assets/";
var directoryJS = directoryAssets + "js";
var directoryCSS = directoryAssets + "css";
var directoryImages = directoryAssets + "img";
var directoryFonts = directoryAssets + "fonts";
gulp.task('JS', ['clean'], function() {
var JS = bowerMain('js', 'min.js');
gulp.src(JS.minified)
.pipe(gulp.dest(directoryJS));
gulp.src(JS.minifiedNotFound)
.pipe(uglify())
.pipe(rename({
suffix: ".min"
}))
.pipe(gulp.dest(directoryJS));
gulp.start('srcJS');
});
gulp.task('srcJS', function() {
gulp.src('src/js/*.js')
.pipe(uglify())
.pipe(rename({
suffix: ".min"
}))
.pipe(gulp.dest(directoryJS));
});
gulp.task('CSS', ['clean'], function() {
var CSS = bowerMain('css', 'min.css');
gulp.src(CSS.minified)
.pipe(gulp.dest(directoryCSS));
gulp.src(CSS.minifiedNotFound)
.pipe(uglifyCSS())
.pipe(rename({
suffix: ".min"
}))
.pipe(gulp.dest(directoryCSS));
gulp.src(mainBowerFiles('**/*.less'))
.pipe(less())
.pipe(uglifyCSS())
.pipe(rename({
suffix: ".min"
}))
.pipe(gulp.dest(directoryCSS));
gulp.start('srcCSS');
});
gulp.task('srcCSS', function() {
gulp.src('src/css/*.css')
.pipe(uglifyCSS())
.pipe(rename({
suffix: ".min"
}))
.pipe(gulp.dest(directoryCSS));
gulp.src('src/css/themes/*.css')
.pipe(concatCss('themes.min.css'))
.pipe(uglifyCSS())
.pipe(gulp.dest(directoryCSS));
});
gulp.task('images', ['clean'], function() {
gulp.src(mainBowerFiles('**/*.{jpg,png,jpeg,gif}'))
.pipe(flatten())
.pipe(gulp.dest(directoryImages));
gulp.start('srcImages');
});
gulp.task('srcImages', function() {
gulp.src('src/images/*.{jpg,png,jpeg,gif}')
.pipe(flatten())
.pipe(gulp.dest(directoryImages));
});
gulp.task('fonts', ['clean'], function() {
gulp.src(mainBowerFiles('**/*.{otf,eot,svg,ttf,woff,woff2}'))
.pipe(flatten())
.pipe(gulp.dest(directoryFonts));
gulp.start('srcFonts');
});
gulp.task('srcFonts', function() {
gulp.src('src/fonts/*.{otf,eot,svg,ttf,woff,woff2}')
.pipe(flatten())
.pipe(gulp.dest(directoryFonts));
});
gulp.task('ckeditor', ['clean'], function() {
gulp.src([bowerDirectory + '/ckeditor/adapters/**/*'])
.pipe(gulp.dest(directoryJS + "/adapters"));
//gulp.src([bowerDirectory + '/ckeditor/plugins/**/*'])
// .pipe(gulp.dest(directoryJS + "/plugins"));
gulp.src([bowerDirectory + '/ckeditor/lang/**/*'])
.pipe(gulp.dest(directoryJS + "/lang"));
gulp.src([bowerDirectory + '/ckeditor/skins/**/*'])
.pipe(gulp.dest(directoryJS + "/skins"));
gulp.src([bowerDirectory + '/ckeditor/ckeditor.js', bowerDirectory + '/ckeditor/styles.js'])
.pipe(gulp.dest(directoryJS));
});
gulp.task('colorpicker', ['clean'], function() {
gulp.src([bowerDirectory + '/mjolnic-bootstrap-colorpicker/dist/**/*.{jpg,png,jpeg}'])
.pipe(flatten())
.pipe(gulp.dest(directoryImages + '/bootstrap-colorpicker'));
});
gulp.task('i18n', ['clean'], function() {
gulp.src([bowerDirectory + '/**/i18n/*.js', bowerDirectory + '/**/lang/*.js', 'src/js/i18n/**/*.js', '!' + bowerDirectory + '/**/src/**', '!' + bowerDirectory + '/ckeditor/**', '!src/js/i18n/datatables/**'])
.pipe(rename(function(path) {
if (path.basename.indexOf(".min") == -1) path.basename += ".min";
}))
.pipe(uglify())
.pipe(flatten({
includeParents: 1
}))
.pipe(gulp.dest(directoryJS + "/i18n"));
gulp.src(['src/js/i18n/datatables/*.js'])
.pipe(rename(function(path) {
if (path.basename.indexOf(".min") == -1) path.basename += ".min";
}))
.pipe(jsonMinify())
.pipe(gulp.dest(directoryJS + "/i18n/datatables"));
gulp.src(['src/js/i18n/**/*.js', '!src/js/i18n/datatables/*'])
.pipe(rename(function(path) {
if (path.basename.indexOf(".min") == -1) path.basename += ".min";
}))
.pipe(uglify())
.pipe(flatten({
includeParents: 1
}))
.pipe(gulp.dest(directoryJS + "/i18n"));
});
gulp.task('clean', function() {
return del([directoryJS, directoryCSS, directoryImages, directoryFonts]);
});
gulp.task('bower', ['clean'], function() {
gulp.start('JS');
gulp.start('CSS');
gulp.start('images');
gulp.start('fonts');
gulp.start('other');
});
gulp.task('other', ['clean'], function() {
gulp.start('ckeditor');
gulp.start('colorpicker');
gulp.start('i18n');
});
gulp.task('src', function() {
gulp.start('srcJS');
gulp.start('srcCSS');
gulp.start('srcFonts');
gulp.start('srcImages');
});
gulp.task('watch', function() {
gulp.watch("src/**/*", ['src']);
});
gulp.task('src&watch', ['src', 'watch']);
gulp.task('default', ['clean', 'bower']);