101 lines
2.5 KiB
JavaScript
101 lines
2.5 KiB
JavaScript
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);
|
|
|
|
});
|