From 6d8c81bff0cb5c6ee601c2641d868307f161db5a Mon Sep 17 00:00:00 2001 From: Max Yakovenko Date: Sun, 19 Aug 2018 17:59:57 +0300 Subject: [PATCH] add gulp for building client scripts and styles --- gulpfile.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 40 ++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 gulpfile.js create mode 100644 package.json diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..1efe276 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,74 @@ +'use strict'; + +var autoprefixer = require('gulp-autoprefixer'), + path = require('path'), + minify = require('gulp-minify'), + cleanCss = require('gulp-clean-css'), + debug = require('gulp-debug'), + csso = require('gulp-csso'), + concatCss = require('gulp-concat-css'), + concatJs = require('gulp-concat'), + sourcemaps = require('gulp-sourcemaps'), + jshint = require('gulp-jshint'), + del = require('del'), + gulp = require('gulp'), + uglify = require('gulp-uglify'); + +const AUTOPREFIXER_BROWSERS = [ + 'ie >= 10', + 'ie_mob >= 10', + 'ff >= 30', + 'chrome >= 34', + 'safari >= 7', + 'opera >= 23', + 'ios >= 7', + 'android >= 4.4', + 'bb >= 10' +]; +var basePath = path.dirname(__filename); +var staticPath = basePath + '/static/'; + +gulp.task('clean', gulp.series(function () { + return del([ + staticPath + 'css/build.css', + staticPath + 'js/build.js', + staticPath + 'js/build-min.js' + ]); +})); + +gulp.task('minstyles', gulp.series(function () { + return del([staticPath + 'css/build.css']) +}, function () { + return gulp.src(['static/css/**/*.css'], {base: basePath}) + .pipe(autoprefixer({browsers: AUTOPREFIXER_BROWSERS})) + .pipe(concatCss('build.css')) + .pipe(sourcemaps.init()) + .pipe(cleanCss()) + .pipe(csso()) + .pipe(sourcemaps.write()) + .pipe(gulp.dest('static/css/', {base: basePath})); +})); + +gulp.task('minscripts', gulp.series(gulp.series(function () { + return del([staticPath + 'js/build.js']) +}, function () { + return gulp.src([ + 'node_modules/jquery/dist/jquery.js', + 'node_modules/jquery-ui-dist/jquery-ui.js', + 'node_modules/magnific-popup/dist/jquery.magnific-popup.js', + 'node_modules/jquery-bar-rating/dist/jquery.barrating.min.js', + 'node_modules/bootstrap/dist/js/bootstrap.js', + 'node_modules/jquery-autocomplete/jquery.autocomplete.js', + 'static/js/**/*.js' + ], {base: basePath}) + .pipe(jshint()) + .pipe(jshint.reporter('default')) + .pipe(uglify()) + .pipe(sourcemaps.init()) + .pipe(concatJs('build.js')) + .pipe(sourcemaps.write()) + .pipe(minify()) + .pipe(gulp.dest('static/js/', {base: basePath})); +}))); + +gulp.task('default', gulp.series('minstyles', 'minscripts')); diff --git a/package.json b/package.json new file mode 100644 index 0000000..7ceee10 --- /dev/null +++ b/package.json @@ -0,0 +1,40 @@ +{ + "name": "local-minifier", + "version": "0.1.0", + "description": "A local environment to minify CSS, JS", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/amardeeprai/local-minifier" + }, + "devDependencies": { + "del": "^2.0.2", + "gulp": "^4.0.0", + "gulp-autoprefixer": "latest", + "gulp-clean-css": "^3.10.0", + "gulp-csso": "^3.0.1", + "gulp-concat": "^2.6.1", + "gulp-concat-css": "^3.1.0", + "gulp-debug": "^4.0.0", + "gulp-jshint": "^2.1.0", + "gulp-minify": "^3.1.0", + "gulp-rename": "^1.4.0", + "gulp-sourcemaps": "^2.6.4", + "gulp-uglify": "^2.0.0", + "jshint": "^2.9.6", + "minimatch": "3.0.2", + "run-sequence": "^1.2.2" + }, + "engines": { + "node": ">=0.12.0" + }, + "dependencies": { + "bootstrap": "3.3.7", + "gulp-minify-css": "^1.2.4", + "jquery": "^3.3.1", + "jquery-autocomplete": "^1.2.8", + "jquery-bar-rating": "^1.2.2", + "jquery-ui-dist": "1.12.1", + "magnific-popup": "^1.1.0" + } +}