'use strict'; var gulp = require('gulp'); require('gulp-run-seq'); var sass = require('gulp-sass'); var autoprefixer = require("gulp-autoprefixer"); var cleancss = require('gulp-clean-css'); var rename = require("gulp-rename"); var uglify = require("gulp-uglify"); var sourcemaps = require('gulp-sourcemaps'); var cssbeautify = require('gulp-cssbeautify'); var lec = require('gulp-line-ending-corrector'); var concat = require('gulp-concat'); var wait = require('gulp-wait'); var print = require('gulp-print').default; var cleanCssOptions = { compatibility: 'ie7', keepSpecialComments: '*', rebase: false }; var path = { sass: 'src/main/sass', src: { css: 'src/main/resources/META-INF/resources/static/css', plugins: 'src/main/resources/META-INF/resources/static/plugins', scripts: 'src/main/resources/META-INF/resources/static/scripts' }, output: { css: 'src/main/resources/META-INF/resources/static/css', plugins: 'src/main/resources/META-INF/resources/static/plugins', scripts: 'src/main/resources/META-INF/resources/static/scripts' } }; gulp.task('sass-bootstrap', function(end) { // Bootstrap 3 gulp.src(path.sass + '/custom/bootstrap.scss') .pipe(sass()) .pipe(cssbeautify()) //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.plugins + '/bootstrap/css')) .pipe(print(function(filepath) { return "sass: " + filepath; })) .on('end', function(){ end.notify('sass-bootstrap-end', function() {}); }); }); gulp.task('sass-custom', function(end) { // 组件 gulp.src([ path.sass + '/custom/*.scss', '!' + path.sass + '/custom/bootstrap.scss' ]) .pipe(sass()) .pipe(autoprefixer()) .pipe(cssbeautify()) //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.css)) .pipe(print(function(filepath) { return "sass: " + filepath; })) .on('end', function(){ end.notify('sass-custom-end', function() {}); }); }); gulp.task('sass-themes', function(end) { // 主题 gulp.src(path.sass + '/custom/themes/*.scss') .pipe(sass()) .pipe(autoprefixer()) .pipe(cssbeautify()) //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.css + '/themes')) .pipe(print(function(filepath) { return "sass: " + filepath; })) .on('end', function(){ end.notify('sass-themes-end', function() {}); }); }); //*** SASS 编译 gulp.task('sass', ['sass-bootstrap', 'sass-custom', 'sass-themes']); //*** CSS 压缩任务 gulp.task('minify-bootstrap', ['sass-bootstrap'], function(end) { end.wait('sass-bootstrap-end'); gulp.src([ path.src.plugins + '/bootstrap/css/*.css', '!' + path.src.plugins + '/bootstrap/css/*.min.css' ]) .pipe(sourcemaps.init()) .pipe(cleancss(cleanCssOptions)) .pipe(rename({ suffix: '.min' })) .pipe(sourcemaps.write('./', { includeContent: false })) //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.plugins + '/bootstrap/css')) .pipe(print(function(filepath) { return "minify-bootstrap: " + filepath; })); }); gulp.task('minify-custom', ['sass-custom'], function(end) { end.wait('sass-custom-end'); gulp.src([ path.src.css + '/*.css', '!' + path.src.css + '/*.min.css' ]) .pipe(sourcemaps.init()) .pipe(cleancss(cleanCssOptions)) .pipe(rename({ suffix: '.min' })) .pipe(sourcemaps.write('./', { includeContent: false })) //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.css)) .pipe(print(function(filepath) { return "minify-css: " + filepath; })); }); gulp.task('minify-themes', ['sass-themes'], function(end) { end.wait('sass-themes-end'); gulp.src([ path.src.css + '/themes/*.css', '!' + path.src.css + '/themes/*.min.css' ]) .pipe(sourcemaps.init()) .pipe(cleancss(cleanCssOptions)) .pipe(rename({ suffix: '.min' })) .pipe(sourcemaps.write('./', { includeContent: false })) //.pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.css + '/themes')) .pipe(print(function(filepath) { return "minify-css: " + filepath; })); }); gulp.task('minify-css', ['minify-bootstrap', 'minify-custom', 'minify-themes']); //*** JS 压缩任务 gulp.task('minify-scrpits', function(end) { //js 压缩 gulp.src([ path.src.scripts + '/*.js', '!' + path.src.scripts + '/*.min.js' ]) .pipe(sourcemaps.init()) .pipe(uglify({ output: { ascii_only: true } })) .pipe(rename({ suffix: '.min' })) .pipe(sourcemaps.write('./', { includeContent: false })) .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.scripts)) .pipe(print(function(filepath) { return "minify-js: " + filepath; })); }); gulp.task('minify-bootstrap-modal', function(end) { gulp.src([ path.src.plugins + '/bootstrap-modal/js/bootstrap-modalmanager.js', path.src.plugins + '/bootstrap-modal/js/bootstrap-modal.js' ]) .pipe(sourcemaps.init()) .pipe(concat('bootstrap-modal-all.js')) .pipe(gulp.dest(path.output.plugins + '/bootstrap-modal/js')) .pipe(uglify({ output: { ascii_only: true } })) .pipe(rename({ suffix: '.min' })) .pipe(sourcemaps.write('./', { includeContent: false })) .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.plugins + '/bootstrap-modal/js')) .pipe(print(function(filepath) { return "minify-js: " + filepath; })); }); gulp.task('minify-bootstrap-pagination', function(end) { gulp.src([ path.src.plugins + '/bootstrap-pagination/bootstrap-pagination.js' ]) .pipe(sourcemaps.init()) .pipe(uglify({ output: { ascii_only: true } })) .pipe(rename({ suffix: '.min' })) .pipe(sourcemaps.write('./', { includeContent: false })) .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.plugins + '/bootstrap-pagination')) .pipe(print(function(filepath) { return "minify-js: " + filepath; })); }); gulp.task('minify-common-grid', function(end) { gulp.src([ path.src.plugins + '/jqwidgets/common-grid.js' ]) .pipe(sourcemaps.init()) .pipe(uglify({ output: { ascii_only: true } })) .pipe(rename({ suffix: '.min' })) .pipe(sourcemaps.write('./', { includeContent: false })) .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.plugins + '/jqwidgets')) .pipe(print(function(filepath) { return "minify-js: " + filepath; })); gulp.src([ path.src.plugins + '/video.js/videojs-contrib-hls.js' ]) .pipe(sourcemaps.init()) .pipe(uglify({ output: { ascii_only: true } })) .pipe(rename({ suffix: '.min' })) .pipe(lec({ eolc: 'CRLF', encoding: 'utf8' })) .pipe(gulp.dest(path.output.plugins + '/video.js')) .pipe(print(function(filepath) { return "minify-js: " + filepath; })); }); gulp.task('minify-js', ['minify-scrpits', 'minify-bootstrap-modal', 'minify-bootstrap-pagination', 'minify-common-grid']); gulp.task('default', ['minify-css', 'minify-js']);