Skip to content

Instantly share code, notes, and snippets.

@furdarius
Created August 29, 2015 19:07
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 furdarius/c396fe1e40aa0bd1845d to your computer and use it in GitHub Desktop.
Save furdarius/c396fe1e40aa0bd1845d to your computer and use it in GitHub Desktop.
Gulpfile.js with sass, js, maps, config, prod task, sourcemaps
'use strict';
var gulp = require('gulp');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var autoprefixer = require('gulp-autoprefixer');
var sassdoc = require('sassdoc');
var minifycss = require('gulp-minify-css');
var imagemin = require('gulp-imagemin');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var gulpif = require('gulp-if');
var config = {
uglify: false,
path: {
resources: {
sass: './resources/assets/sass/**/*.scss',
img: './resources/assets/img/**/*.{gif,jpg,png,svg}',
js: './resources/assets/js/**/*.js',
},
public: {
css: './public/css',
img: './public/img',
js: './public/js'
}
},
sass: {
errLogToConsole: true,
outputStyle: 'expanded'
},
autoprefixer: {
browsers: ['last 2 versions', '> 5%', 'Firefox ESR']
},
sassdoc: {
dest: './public/sassdoc'
},
imagemin: {
progressive: true
}
};
gulp.task('sass', function () {
return gulp
.src(config.path.resources.sass)
.pipe(sourcemaps.init())
.pipe(sass(config.sass).on('error', sass.logError))
.pipe(autoprefixer(config.autoprefixer))
.pipe(gulpif(config.uglify, minifycss()))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(config.path.public.css));
});
gulp.task('sass:lite', function () {
return gulp
.src(config.path.resources.sass)
.pipe(sass(config.sass).on('error', sass.logError))
.pipe(gulp.dest(config.path.public.css));
});
gulp.task('sassdoc', function () {
return gulp
.src(config.path.resources.sass)
.pipe(sassdoc(config.sassdoc))
.resume();
});
gulp.task('sass:watch', ['sass'], function() {
return gulp
.watch(config.path.resources.sass, ['sass'])
.on('change', function(event) {
console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});
});
gulp.task('img', function () {
return gulp
.src(config.path.resources.img)
.pipe(imagemin(config.imagemin))
.pipe(gulp.dest(config.path.public.img));
});
gulp.task('js', function() {
return gulp.src(config.path.resources.js)
.pipe(sourcemaps.init())
.pipe(concat('app.js'))
.pipe(gulpif(config.uglify, uglify()))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(config.path.public.js));
});
gulp.task('js:watch', ['js'], function() {
return gulp
.watch(config.path.resources.js, ['js'])
.on('change', function(event) {
console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});
});
gulp.task('prod:configure',function() {
config.uglify = true;
});
gulp.task('default', ['sass', 'img', 'js']);
gulp.task('prod', ['prod:configure', 'sass', 'sassdoc', 'img', 'js']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment