File: /home/imensosw/www/imenso.co/demo/pagetosite/gulpfile.js
// Load all the modules from package.json
var gulp = require( 'gulp' ),
plumber = require( 'gulp-plumber' ),
autoprefixer = require('gulp-autoprefixer'),
watch = require( 'gulp-watch' ),
uglify = require( 'gulp-uglify' ),
rename = require( 'gulp-rename' ),
notify = require( 'gulp-notify' ),
include = require( 'gulp-include' ),
sass = require( 'gulp-sass' ),
imageoptim = require('gulp-imageoptim');
var config = {
nodeDir: './node_modules'
}
// Default error handler
var onError = function( err ) {
console.log( 'An error occured:', err.message );
this.emit('end');
}
// Concatenates all files that it finds in the manifest
// and creates two versions: normal and minified.
// It's dependent on the jshint task to succeed.
gulp.task( 'scripts', function() {
return gulp.src( './assets/js/manifest.js' )
.pipe( include() )
.pipe( rename( { basename: 'scripts' } ) )
.pipe( gulp.dest( './assets/js/dist' ) )
// Normal done, time to create the minified javascript (scripts.min.js)
// remove the following 3 lines if you don't want it
.pipe( uglify() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( gulp.dest( './assets/js/dist' ) )
// .pipe( notify({ message: 'scripts task complete' }));
} );
// Different options for the Sass tasks
var options = {};
options.sass = {
errLogToConsole: true,
precision: 8,
noCache: true,
//imagePath: 'assets/img',
includePaths: [
config.nodeDir + '/bootstrap/scss',
]
};
options.sassmin = {
errLogToConsole: true,
precision: 8,
noCache: true,
outputStyle: 'compressed',
//imagePath: 'assets/img',
includePaths: [
config.nodeDir + '/bootstrap/scss',
]
};
// Sass
gulp.task('sass', function() {
return gulp.src('./assets/sass/style.scss')
.pipe(plumber())
.pipe(sass(options.sass).on('error', sass.logError))
.pipe(autoprefixer())
.pipe(gulp.dest('./assets/css'))
.pipe(notify({ title: 'Sass', message: 'sass task complete' }));
});
// Sass-min - Release build minifies CSS after compiling Sass
gulp.task('sass-min', function() {
return gulp.src('./assets/sass/style.scss')
.pipe(plumber())
.pipe(sass(options.sassmin).on('error', sass.logError))
.pipe(autoprefixer())
.pipe(rename( { suffix: '.min' } ) )
.pipe(gulp.dest('./assets/css'))
.pipe(notify({ title: 'Sass', message: 'sass-min task complete' }));
});
// Optimize Images
gulp.task('images', function() {
return gulp.src('./assets/images/**/*')
.pipe(imageoptim.optimize({jpegmini: true}))
.pipe(gulp.dest('./assets/images'))
.pipe( notify({ message: 'Images task complete' }));
});
// Start the livereload server and watch files for change
gulp.task( 'watch', function() {
// don't listen to whole js folder, it'll create an infinite loop
gulp.watch( [ './assets/js/**/*.js', '!./js/assets/dist/*.js' ], [ 'scripts' ] )
gulp.watch( './assets/sass/**/*.scss', ['sass', 'sass-min'] );
gulp.watch( './assets/images/**/*', ['images']);
//gulp.watch( './**/*.php' ).on('change', browserSync.reload);
} );
gulp.task( 'default', ['watch'], function() {
// Does nothing in this task, just triggers the dependent 'watch'
} );;