var gulp = require("gulp"); var browserify = require('browserify'); var watchify = require('watchify'); var coffeeify = require('coffeeify'); var hbfs = require('hbsfy'); var buffer = require('vinyl-buffer'); var source = require('vinyl-source-stream'); var livereload = require('gulp-livereload'); var sourcemaps = require('gulp-sourcemaps'); var streamify = require('gulp-streamify'); var uglify = require('gulp-uglify'); var debowerify = require('debowerify'); var runSequence = require('run-sequence'); var less = require('gulp-less'); function buildScript( file ) { var bundler = browserify({ entries: ['./app/' + file], debug: true, cache: {}, packageCache: {}, extensions: ['.coffee'], noParse: [], base: true, builtins: [], insertGlobals: true, detectGlobals: false, }); bundler = watchify(bundler); bundler.on('update', rebundle); bundler.transform('coffeeify', { }); bundler.transform('hbsfy', { }); bundler.transform('debowerify', { }); function rebundle ( ) { var stream = bundler.bundle(); return stream .on('error', function ( err ) { console.log( err ); } ) .on('end', function ( ) { console.log( "Ending the build" ); } ) .pipe(source('main.js')) .pipe(buffer()) .pipe(sourcemaps.init({loadMaps: true})) // .pipe(streamify(uglify({ // compress: {drop_console: false} // }))) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('./js')) .pipe(livereload()); } return rebundle(); } gulp.task('browserify', function ( ) { livereload.listen(); return buildScript('main.coffee'); } ) gulp.task('styles', function () { return gulp.src('./app/styles/main.less') .pipe(sourcemaps.init()) .pipe(less()) .on('error', function ( err ) { console.log(err); }) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('./css')) .pipe(livereload()); }); gulp.task('watch', function ( ) { global.isWatching = true; // Scripts are automatically watched and rebundled by Watchify inside Browserify task gulp.watch('./app/styles/**/*.less', ['styles']); // gulp.watch(config.views.watch, ['views']); }); gulp.task('default', function(cb) { global.isProd = false; livereload.listen(); runSequence(['styles', /* 'images', 'fonts', */], 'browserify', 'watch', cb); });