Skip to content

Instantly share code, notes, and snippets.

@popstas
Created August 5, 2016 04:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save popstas/11f2d42dc9fbf7c64f6aa78c7cf9419b to your computer and use it in GitHub Desktop.
Save popstas/11f2d42dc9fbf7c64f6aa78c7cf9419b to your computer and use it in GitHub Desktop.
'use strict';
var argv = require('yargs').argv;
var autoprefixer = require('autoprefixer');
var cleanCSS = require('gulp-clean-css');
var concat = require('gulp-concat');
var debug = require('gulp-debug');
var duration = require('gulp-duration');
var gulp = require('gulp');
var gulpif = require('gulp-if');
var imagemin = require('gulp-imagemin');
var less = require('gulp-less');
var plumber = require('gulp-plumber');
var postcss = require('gulp-postcss');
var postcssFocus = require('postcss-focus');
var sourcemaps = require('gulp-sourcemaps');
var uglify = require('gulp-uglify');
var watch = require('gulp-watch');
var watchLess = require('gulp-watch-less');
var path = {
src: {
js: [
'includes/js/jquery/jquery-1.9.1.min.js',
'includes/js/jquery/jquery-ui.js'
],
style: 'templates/less/style.less',
images: 'templates/images/**/*.*',
fonts: 'templates/fonts/**/*.*'
},
build: {
js: 'build/js/',
css: 'build/css/',
images: 'build/images/',
fonts: 'build/fonts/'
},
watch: {
style: 'templates/**/*.less'
}
};
gulp.task('default', ['build']);
gulp.task('build', ['build:js', 'build:less', 'build:images', 'build:fonts']);
gulp.task('watch', ['build', 'watch:js', 'watch:less']);
gulp.task('build:js', function () {
gulp.src(path.src.js)
.pipe(gulpif(!argv.production, sourcemaps.init()))
.pipe(concat('script.js'))
.pipe(gulpif(argv.production, uglify()))
.pipe(gulpif(!argv.production, sourcemaps.write('.')))
.pipe(duration('build js'))
.pipe(gulp.dest(path.build.js))
});
gulp.task('build:less', function () {
gulp.src(path.src.style)
.pipe(plumber())
.pipe(gulpif(!argv.production, sourcemaps.init()))
.pipe(less())
.pipe(postcss([
autoprefixer({browsers: ['last 4 versions']}),
postcssFocus()
]))
.pipe(gulpif(argv.production, cleanCSS({compatibility: 'ie8'})))
.pipe(gulpif(!argv.production, sourcemaps.write('.')))
.pipe(plumber.stop())
.pipe(duration('build less'))
.pipe(gulp.dest(path.build.css))
;
});
gulp.task('build:images', function () {
gulp.src(path.src.images)
.pipe(imagemin({
progressive: true,
svgoPlugins: [{removeViewBox: false}],
interlaced: true,
optimizationLevel: 7
}))
.pipe(gulp.dest(path.build.images))
});
gulp.task('build:fonts', function () {
gulp.src(path.src.fonts)
.pipe(gulp.dest(path.build.fonts))
});
gulp.task('watch:js', function () {
return watch(path.src.js, { readDelay: 100 }, function (files) {
gulp.start('build:js');
});
});
gulp.task('watch:less', function () {
return watch(path.watch.style, { readDelay: 100 }, function (files) {
gulp.start('build:less');
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment