sipp11
9 years ago
8 changed files with 121 additions and 0 deletions
@ -0,0 +1,111 @@ |
|||||||
|
var source = require('vinyl-source-stream'); |
||||||
|
var gulp = require('gulp'); |
||||||
|
var gutil = require('gulp-util'); |
||||||
|
var browserify = require('browserify'); |
||||||
|
var babelify = require('babelify'); |
||||||
|
var watchify = require('watchify'); |
||||||
|
var notify = require('gulp-notify'); |
||||||
|
|
||||||
|
var stylus = require('gulp-stylus'); |
||||||
|
var autoprefixer = require('gulp-autoprefixer'); |
||||||
|
var uglify = require('gulp-uglify'); |
||||||
|
var rename = require('gulp-rename'); |
||||||
|
var buffer = require('vinyl-buffer'); |
||||||
|
|
||||||
|
var browserSync = require('browser-sync'); |
||||||
|
var reload = browserSync.reload; |
||||||
|
var historyApiFallback = require('connect-history-api-fallback') |
||||||
|
|
||||||
|
|
||||||
|
/* |
||||||
|
Styles Task |
||||||
|
*/ |
||||||
|
|
||||||
|
gulp.task('styles',function() { |
||||||
|
// move over fonts
|
||||||
|
|
||||||
|
gulp.src('css/fonts/**.*') |
||||||
|
.pipe(gulp.dest('build/css/fonts')) |
||||||
|
|
||||||
|
// Compiles CSS
|
||||||
|
gulp.src('css/style.styl') |
||||||
|
.pipe(stylus()) |
||||||
|
.pipe(autoprefixer()) |
||||||
|
.pipe(gulp.dest('./build/css/')) |
||||||
|
.pipe(reload({stream:true})) |
||||||
|
}); |
||||||
|
|
||||||
|
/* |
||||||
|
Images |
||||||
|
*/ |
||||||
|
gulp.task('images',function(){ |
||||||
|
gulp.src('css/images/**') |
||||||
|
.pipe(gulp.dest('./build/css/images')) |
||||||
|
}); |
||||||
|
|
||||||
|
/* |
||||||
|
Browser Sync |
||||||
|
*/ |
||||||
|
gulp.task('browser-sync', function() { |
||||||
|
browserSync({ |
||||||
|
// we need to disable clicks and forms for when we test multiple rooms
|
||||||
|
server : {}, |
||||||
|
middleware : [ historyApiFallback() ], |
||||||
|
ghostMode: false |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
function handleErrors() { |
||||||
|
var args = Array.prototype.slice.call(arguments); |
||||||
|
notify.onError({ |
||||||
|
title: 'Compile Error', |
||||||
|
message: '<%= error.message %>' |
||||||
|
}).apply(this, args); |
||||||
|
this.emit('end'); // Keep gulp from hanging on this task
|
||||||
|
} |
||||||
|
|
||||||
|
function buildScript(file, watch) { |
||||||
|
var props = { |
||||||
|
entries: ['./src/' + file], |
||||||
|
debug : true, |
||||||
|
transform: [babelify.configure({ stage : 0 })], |
||||||
|
cache: {}, packageCache: {}, fullPaths: true // Requirement of watchify
|
||||||
|
}; |
||||||
|
|
||||||
|
// watchify() if watch requested, otherwise run browserify() once
|
||||||
|
var bundler = watch ? watchify(browserify(props)) : browserify(props); |
||||||
|
|
||||||
|
function rebundle() { |
||||||
|
var stream = bundler.bundle(); |
||||||
|
return stream |
||||||
|
.on('error', handleErrors) |
||||||
|
.pipe(source(file)) |
||||||
|
.pipe(rename('build.js')) |
||||||
|
.pipe(gulp.dest('./build/')) |
||||||
|
// If you also want to uglify it
|
||||||
|
// .pipe(buffer())
|
||||||
|
// .pipe(uglify())
|
||||||
|
// .pipe(rename('app.min.js'))
|
||||||
|
// .pipe(gulp.dest('./build'))
|
||||||
|
.pipe(reload({stream:true})) |
||||||
|
} |
||||||
|
|
||||||
|
// listen for an update and run rebundle
|
||||||
|
bundler.on('update', function() { |
||||||
|
rebundle(); |
||||||
|
gutil.log('Rebundle...'); |
||||||
|
}); |
||||||
|
|
||||||
|
// run it once the first time buildScript is called
|
||||||
|
return rebundle(); |
||||||
|
} |
||||||
|
|
||||||
|
gulp.task('scripts', function() { |
||||||
|
return buildScript('app.jsx', false); // this will run once because we set watch to false
|
||||||
|
}); |
||||||
|
|
||||||
|
// run 'scripts' task first, then watch for future changes
|
||||||
|
gulp.task('default', ['images','styles','scripts','browser-sync'], function() { |
||||||
|
gulp.watch('css/**/*', ['styles']); // gulp watch for stylus changes
|
||||||
|
return buildScript('app.jsx', true); // browserify watch for JS changes
|
||||||
|
}); |
Loading…
Reference in new issue